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

