Docker在CentOS上的权限设置主要包括以下几类:
默认情况下,Docker守护进程以root身份运行,直接执行Docker命令需root权限。为方便非root用户使用,可通过创建docker组并添加用户实现权限下放:
sudo groupadd docker命令创建名为docker的系统组;$USER或具体用户名)添加到docker组,命令为sudo usermod -aG docker USER(-aG表示追加到组,避免移除原有组);newgrp docker或重新登录用户,无需重启系统即可识别组权限;sudo systemctl restart docker。通过Docker命令参数限制或扩展容器权限,平衡功能需求与安全性:
--user $UID:$GID参数让容器以宿主机指定用户/组身份运行(如docker run -d --user $(id -u):$(id -g) my-image),避免容器内进程拥有root权限;--privileged=true参数赋予容器几乎所有宿主机权限(如访问设备、修改内核参数),但会严重降低安全性,仅用于调试或特殊场景;--cap-add添加容器所需的最小权限(如NET_ADMIN用于网络配置),或--cap-drop移除不必要的权限(如SYS_ADMIN),替代全特权模式,提升安全性。SELinux是CentOS的强制访问控制模块,默认开启时会限制Docker容器对宿主机资源的访问,需通过以下方式调整:
/etc/selinux/config文件,确保SELINUX=enforcing(未注释);setsebool命令调整相关策略,如允许容器访问宿主机的home目录(sudo setsebool -P docker_enable_home true)、允许容器访问网络(sudo setsebool -P httpd_can_network_connect 1);audit2allow工具生成自定义策略。例如,从/var/log/audit/audit.log中提取拒绝日志,执行grep docker /var/log/audit/audit.log | audit2allow -M mydocker生成策略模块,再用semodule -i mydocker.pp安装。通过防火墙(firewalld或iptables)限制对Docker守护进程及容器的访问,防止未授权访问:
docker0)添加到trusted区域(信任所有流量),命令为sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0,然后重载防火墙(sudo firewall-cmd --reload);2375)的访问,命令为sudo iptables -A INPUT -i docker0 -p tcp --dport 2375 -j ACCEPT,并保存规则(sudo service iptables save)。通过修改/etc/docker/daemon.json文件调整守护进程行为,增强权限安全性:
unix:///var/run/docker.sock),若需远程访问,可添加tcp://0.0.0.0:2375,但需配合防火墙限制IP范围;"userns-remapping": "default",将容器内root用户映射到宿主机非root用户,隔离容器与宿主机的权限,提升安全性;"log-driver": "json-file")、存储驱动("storage-driver": "overlay2")等,间接影响权限管理(如日志文件的访问权限)。定期更新Docker守护进程、容器镜像及相关组件,修复已知安全漏洞,减少权限被滥用的风险:
sudo yum update docker-ce docker-ce-cli containerd.io命令更新到最新版本;docker pull imageName:latest拉取镜像最新版本,或在docker-compose.yml中指定镜像版本(如image: nginx:1.25-alpine)。