非root用戶運(yùn)行Docker命令的操作步驟
背景與目的
默認(rèn)情況下,Docker 進(jìn)程的管理權(quán)限綁定在 root
用戶上。直接使用 root 用戶執(zhí)行 Docker 命令存在安全隱患,不利于權(quán)限控制和審計(jì)。為解決此問題,推薦方式是將需要執(zhí)行 Docker 命令的普通用戶添加到 Docker 用戶組(一般為 docker
組),使其擁有對(duì) Docker.sock 的訪問權(quán)限,從而無須提升權(quán)限即可操作 Docker。
操作步驟詳解
下面詳細(xì)說明如何配置非 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 # 如果沒有輸出,說明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)限通常會(huì)自動(dòng)恢復(fù),若遇到權(quá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)證
完成配置后,可以通過如下命令驗(yàn)證用戶的組權(quán)限及 Docker 命令執(zhí)行能力。
1. 查看用戶所屬組
groups ${USER} # 輸出中應(yīng)包含docker組
2. 測(cè)試執(zhí)行 docker 命令
docker ps
若沒有產(chǎn)生權(quán)限錯(cuò)誤,且正常顯示容器列表,說明配置成功。
常見問題排查與建議
權(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ì)被重置??赏ㄟ^創(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é)
通過將普通用戶加入 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)文章
總結(jié)Docker不適合部署數(shù)據(jù)庫的7大原因
在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫的7大原因,有興趣的朋友們可以參考學(xué)習(xí)下。2021-01-01Ollma本地部署Qwen2.5 14B的詳細(xì)過程(不使用docker)
本文介紹了如何在不使用Docker的情況下部署Ollama模型和Open-webui實(shí)現(xiàn)可視化界面,Ollama模型通過命令行操作,包括啟動(dòng)、創(chuàng)建、運(yùn)行等,Open-webui則需要安裝Anaconda環(huán)境,安裝并啟動(dòng)服務(wù)后,通過瀏覽器訪問即可使用,感興趣的朋友跟隨小編一起看看吧2024-11-11Dockerfile中multi-stage(多階段構(gòu)建)詳解
在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡(jiǎn)便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore的方法步驟
這篇文章主要介紹了Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06