[Docker] 使用非 root 權限來執行 docker client
在 Linux 上使用 docker 時,一般是要用 root 帳號或是 sudo 才能執行的,
不過這樣實在有點麻煩,並不想要每次都加上 sudo 才能執行 docker…
在 Stack Exchange: How can I use docker without sudo? 找到了答案,
原來 docker (client) 也可以設定成非 root 帳號可以執行的喔~
(以下步驟是在 CentOS 7 上進行的)
1. 建立 docker 群組
docker 剛裝好時,好像並不會建立 docker 群組,
因此要自己用 groupadd 建立~
sudo groupadd docker
如果 /etc/group 一開始就已經有 docker 群組的話,就不用再建立囉~
2. 將非 root 帳號加上 docker 群組中
將要使用 docker client 的帳號加到 docker 群組中~
像下面的指令會將 testuser 這個帳號加到 docker 群組裡:
sudo usermod -G docker -a testuser
加入群組後,假設這個帳號就是登入中的帳號的話,
group 的資訊並不會立刻更新:
testuser@localhost ~ $ groups
testuser wheel
為了要能立刻產生作用,執行 newgrp docker,
讓這個帳號立刻改成使用 docker 這個群組 (或是你要登出登入也行):
testuser@localhost ~ $ newgrp docker testuser@localhost ~ $ groups docker wheel testuser
3. 重新啟動 docker 服務
重啟 docker 服務之後,所有的變動就完成了:
sudo systemctl restart docker
這時候再來用非 root 帳號直接執行 docker 指令看看,
發現已經可以直接執行了,不再需要 sudo 才能跑囉~^^
testuser@localhost ~ $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7139a0745ac3 testuser/build_prj "/bin/bash" 5 minutes ago Exited (0) 2 seconds ago clever_poincare 17485ef76854 testuser/build_prj "/bin/bash" 12 minutes ago Exited (0) 9 minutes ago condescending_meitner 59e1f860bc50 testuser/build_prj "/bin/bash" 13 minutes ago Exited (2) 13 minutes ago prickly_elion 8cfeae9f0084 testuser/build_prj "/bin/bash" 13 minutes ago furious_wilson 66992fd9cd63 testuser/build_prj "/bin/bash" 13 minutes ago elated_kirch 7e42c018170b testuser/build_prj "/bin/bash" 14 minutes ago mad_nobel 416ddbf7e9fb testuser/build_prj "/bin/bash" 14 minutes ago trusting_perlman ab2ad34285d3 testuser/build_prj "/bin/bash" 16 minutes ago clever_poitras
(本頁面已被瀏覽過 8,772 次)