非root用戶運(yùn)行Docker命令的操作步驟
背景與目的
默認(rèn)情況下,Docker 進(jìn)程的管理權(quán)限綁定在 root 用戶上。直接使用 root 用戶執(zhí)行 Docker 命令存在安全隱患,不利于權(quán)限控制和審計(jì)。為解決此問(wèn)題,推薦方式是將需要執(zhí)行 Docker 命令的普通用戶添加到 Docker 用戶組(一般為 docker 組),使其擁有對(duì) Docker.sock 的訪問(wèn)權(quán)限,從而無(wú)須提升權(quán)限即可操作 Docker。
操作步驟詳解
下面詳細(xì)說(shuō)明如何配置非 root 用戶執(zhí)行 Docker 命令。
1. 確認(rèn)或創(chuàng)建 docker 用戶組
Docker 的套接字文件 /var/run/docker.sock 默認(rèn)會(huì)被分配給 docker 用戶組。如果該組不存在,需要手動(dòng)創(chuàng)建。
# 查看系統(tǒng)是否存在docker用戶組 getent group docker # 如果沒(méi)有輸出,說(shuō)明docker組不存在,執(zhí)行下面命令創(chuàng)建docker組 sudo groupadd docker
說(shuō)明: 使用 getent group docker 代替 cat /etc/group | grep docker,更為高效且語(yǔ)言無(wú)關(guān)。
2. 檢查并修改 Docker 套接字的用戶組歸屬
由于 Docker 的套接字默認(rèn)位于 /var/run/docker.sock,確認(rèn)該文件所屬用戶組是否是 docker,如果不是,需要修改。
# 查看docker.sock的權(quán)限和所屬用戶組 ls -l /var/run/docker.sock # 示例如下,輸出類似: # srw-rw---- 1 root docker 0 Jun 1 10:00 /var/run/docker.sock # 若所屬組不是docker,則執(zhí)行: sudo chgrp docker /var/run/docker.sock
建議: Docker 服務(wù)重啟后,套接字權(quán)限通常會(huì)自動(dòng)恢復(fù),若遇到權(quán)限變化問(wèn)題,可考慮使用 docker.service 的配置覆蓋。
3. 將目標(biāo)用戶添加到 docker 用戶組
將需要執(zhí)行 Docker 命令的普通用戶添加到 docker 組。
# 以當(dāng)前用戶為例
sudo usermod -aG docker ${USER}
注意: -aG 表示向附加組中添加用戶,避免覆蓋已有組。
4. 重新加載用戶組權(quán)證(使配置即時(shí)生效)
為了立即使用戶組權(quán)限生效,可以選擇以下兩種方式:
- 重新登錄用戶會(huì)話,注銷并重新登錄
- 或執(zhí)行
newgrp docker切換當(dāng)前 shell 的組權(quán)限
newgrp docker
效果與驗(yàn)證
完成配置后,可以通過(guò)如下命令驗(yàn)證用戶的組權(quán)限及 Docker 命令執(zhí)行能力。
1. 查看用戶所屬組
groups ${USER}
# 輸出中應(yīng)包含docker組
2. 測(cè)試執(zhí)行 docker 命令
docker ps
若沒(méi)有產(chǎn)生權(quán)限錯(cuò)誤,且正常顯示容器列表,說(shuō)明配置成功。
常見問(wèn)題排查與建議
權(quán)限不足報(bào)錯(cuò)確認(rèn)用戶是否添加到
docker用戶組,并重新登錄 Session。Docker 服務(wù)未啟動(dòng)運(yùn)行
sudo systemctl status docker,確認(rèn) Docker 正常運(yùn)行。docker.sock 權(quán)限會(huì)重置某些系統(tǒng)中,重啟 Docker 服務(wù)后
/var/run/docker.sock的權(quán)限會(huì)被重置??赏ㄟ^(guò)創(chuàng)建 systemd override 文件固定權(quán)限:
sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF [Service] ExecStartPost=/bin/chgrp docker /var/run/docker.sock ExecStartPost=/bin/chmod 660 /var/run/docker.sock EOF sudo systemctl daemon-reload sudo systemctl restart docker
安全建議將用戶添加至
docker組等同于給予 root 權(quán)限,請(qǐng)僅對(duì)可信用戶配置此權(quán)限,避免安全風(fēng)險(xiǎn)。
總結(jié)
通過(guò)將普通用戶加入 docker 用戶組,可以避免使用 root 身份執(zhí)行 Docker 命令,提升系統(tǒng)安全性和運(yùn)維便利性。掌握以上操作步驟和注意事項(xiàng),有助于企業(yè)級(jí) Docker 運(yùn)行環(huán)境的規(guī)范管理。
以上就是非root用戶運(yùn)行Docker命令的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于非root用戶運(yùn)行Docker命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Docker+jenkins+python3環(huán)境搭建超詳細(xì)教程
這篇文章主要介紹了使用Docker+jenkins+python3環(huán)境搭建超詳細(xì)教程,本文通過(guò)多種方法結(jié)合示例代碼給大家詳細(xì)介紹,需要的朋友可以參考下2021-07-07
Docker/DockerSwarm部署LNMP并平滑升級(jí)PHP過(guò)程
本文詳細(xì)介紹了如何在CentOS上配置Docker環(huán)境、部署LNMP(Linux, Nginx, MySQL, PHP)服務(wù),并通過(guò)Docker Swarm實(shí)現(xiàn)PHP版本的平滑升級(jí),文章還涵蓋了配置內(nèi)核轉(zhuǎn)發(fā)、安裝Docker、配置鏡像倉(cāng)庫(kù)、拉取鏡像、部署容器、連接容器、解決常見問(wèn)題、升級(jí)應(yīng)用以及回滾測(cè)試等內(nèi)容2025-10-10
Docker 部署開源遠(yuǎn)程桌面工具RustDesk的使用
本文介紹了RustDesk開源遠(yuǎn)程桌面工具的Docker部署使用方法,支持自建服務(wù)器,可實(shí)現(xiàn)安全私密的遠(yuǎn)程控制電腦,具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10
docker配置openGauss數(shù)據(jù)庫(kù)的方法詳解
這篇文章主要介紹了docker配置openGauss數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉(cāng)庫(kù)方式
這篇文章主要介紹了docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉(cāng)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
使用 Azure Container Registry 儲(chǔ)存鏡像的問(wèn)題
Azure Container Registry(容器注冊(cè)表)是基于 Docker Registry 2.0規(guī)范的托管專用 Docker 注冊(cè)表服務(wù)。這篇文章主要介紹了使用 Azure Container Registry 儲(chǔ)存鏡像,需要的朋友可以參考下2021-05-05

