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
)。