非root用戶運行Docker命令的操作步驟
背景與目的
默認情況下,Docker 進程的管理權(quán)限綁定在 root
用戶上。直接使用 root 用戶執(zhí)行 Docker 命令存在安全隱患,不利于權(quán)限控制和審計。為解決此問題,推薦方式是將需要執(zhí)行 Docker 命令的普通用戶添加到 Docker 用戶組(一般為 docker
組),使其擁有對 Docker.sock 的訪問權(quán)限,從而無須提升權(quán)限即可操作 Docker。
操作步驟詳解
下面詳細說明如何配置非 root 用戶執(zhí)行 Docker 命令。
1. 確認或創(chuàng)建 docker 用戶組
Docker 的套接字文件 /var/run/docker.sock
默認會被分配給 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 的套接字默認位于 /var/run/docker.sock
,確認該文件所屬用戶組是否是 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. 將目標用戶添加到 docker 用戶組
將需要執(zhí)行 Docker 命令的普通用戶添加到 docker
組。
# 以當前用戶為例 sudo usermod -aG docker ${USER}
注意: -aG 表示向附加組中添加用戶,避免覆蓋已有組。
4. 重新加載用戶組權(quán)證(使配置即時生效)
為了立即使用戶組權(quán)限生效,可以選擇以下兩種方式:
- 重新登錄用戶會話,注銷并重新登錄
- 或執(zhí)行
newgrp docker
切換當前 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)限不足報錯確認用戶是否添加到
docker
用戶組,并重新登錄 Session。Docker 服務(wù)未啟動運行
sudo systemctl status docker
,確認 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)限,避免安全風險。
總結(jié)
通過將普通用戶加入 docker
用戶組,可以避免使用 root 身份執(zhí)行 Docker 命令,提升系統(tǒng)安全性和運維便利性。掌握以上操作步驟和注意事項,有助于企業(yè)級 Docker 運行環(huán)境的規(guī)范管理。
以上就是非root用戶運行Docker命令的操作步驟的詳細內(nèi)容,更多關(guān)于非root用戶運行Docker命令的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
總結(jié)Docker不適合部署數(shù)據(jù)庫的7大原因
在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫的7大原因,有興趣的朋友們可以參考學(xué)習下。2021-01-01Ollma本地部署Qwen2.5 14B的詳細過程(不使用docker)
本文介紹了如何在不使用Docker的情況下部署Ollama模型和Open-webui實現(xiàn)可視化界面,Ollama模型通過命令行操作,包括啟動、創(chuàng)建、運行等,Open-webui則需要安裝Anaconda環(huán)境,安裝并啟動服務(wù)后,通過瀏覽器訪問即可使用,感興趣的朋友跟隨小編一起看看吧2024-11-11Dockerfile中multi-stage(多階段構(gòu)建)詳解
在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習學(xué)習吧。2018-03-03Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟
這篇文章主要介紹了Gogs+Jenkins+Docker 自動化部署.NetCore,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2021-06-06