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的安全性,降低被攻击的风险。需定期审查安全策略,适应不断变化的安全威胁。