SELinux(安全增強型Linux)通過**強制訪問控制(MAC)**限制容器對宿主機資源的訪問,是CentOS上提升Docker安全的核心工具。
sestatus
(若為Disabled
需修改/etc/selinux/config
文件,將SELINUX=disabled
改為SELINUX=enforcing
);setenforce 1
(重啟后生效);/etc/selinux/config
文件,保存后重啟系統。選擇精簡型基礎鏡像(如Alpine Linux、Debian Slim)替代CentOS等大型鏡像,可顯著降低鏡像中的漏洞數量。
FROM alpine:latest # 使用Alpine鏡像(體積約5MB)
RUN apk add --no-cache python3 # 僅安裝必要組件
及時更新Docker引擎、CentOS系統及鏡像中的軟件包,修復已知安全漏洞。
sudo yum update -y
;sudo yum update docker -y
;docker pull 鏡像名:latest
(如docker pull alpine:latest
)。yum-cron
或Docker Hub的自動通知功能)。通過**Cgroups(控制組)**限制容器的CPU、內存、磁盤等資源,避免單個容器耗盡宿主機資源導致系統崩潰或被橫向攻擊。
/etc/docker/daemon.json
):{
"cpu": {"cpus": "0.5"}, // 限制CPU使用率為50%
"memory": {"limit": "512m"}, // 限制內存為512MB
"storage-driver": "overlay2" // 推薦使用overlay2存儲驅動
}
sudo systemctl restart docker
。使用Docker自定義網絡(如bridge
或overlay
)將不同容器劃分到獨立網絡,限制容器間的非必要通信。
docker network create my-network
;docker run --network=my-network -it centos /bin/bash
;docker network disconnect
斷開不必要的連接)。**特權容器(–privileged)**擁有宿主機的root權限,極易被攻擊者利用。應盡量避免使用,如需特殊權限可通過--cap-add
添加特定能力。
docker run --cap-add=NET_ADMIN -it centos /bin/bash # 僅添加網絡管理權限
"no-new-privileges": true
(需重啟Docker)。敏感信息(如密碼、API密鑰)不應硬編碼在鏡像或容器中,應通過以下方式安全傳遞:
-e
參數傳遞(如docker run -e MYSQL_PASSWORD=123456 centos
);-v
掛載到容器(如-v /host/secure/config:/container/config
)。使用專業工具掃描鏡像中的已知漏洞(如CVE),及時修復問題。
docker scan
(Docker內置工具,需登錄Docker Hub):docker scan 鏡像名
;docker scan alpine:latest # 掃描Alpine鏡像
nginx
、redis
),避免使用未知來源的鏡像;USER
指令切換至非root用戶(如RUN useradd -m appuser && USER appuser
);cAdvisor
、Prometheus
監控容器資源,Grafana
可視化日志,及時發現異常行為。通過以上措施,可顯著提升CentOS環境下Docker的安全性,降低被攻擊的風險。需定期審查安全策略,適應不斷變化的安全威脅。