在使用 Docker 時,我們可能多次遇到需要輸入“sudo”才能執行 Docker 相關命令的情況。這是因為 Docker 的操作需要使用“root”權限。然而,頻繁地使用“sudo”會增加一些麻煩,比如輸入密碼等等。那么,有沒有辦法可以讓我們在使用 Docker 時不需要輸入“sudo”呢?答案是肯定的。
下面介紹兩種方法:
方法一:將用戶添加到 docker 組
# 首先查看當前用戶所屬的組,找到“sudo”組(namei后) $ id uid=1000(username) gid=1000(username) groups=1000(username),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare) # 創建“docker”組 $ sudo groupadd docker # 將當前用戶添加進“docker”組 $ sudo usermod -aG docker $USER # 然后重啟 docker 服務 $ sudo service docker restart
以上就是添加用戶到“docker”組的方法。此時,可以重新打開終端,再次運行 Docker 命令,就不需要加“sudo”了。
方法二:修改 Docker 的配置文件
首先打開 Docker 的配置文件:
$ sudo vim /lib/systemd/system/docker.service
找到下面這一行:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
在這行的前面添加下面的內容:
ExecStartPost=/sbin/iptables -P FORWARD ACCEPT
修改后,內容如下:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target docker.socket firewalld.service Wants=network-online.target Requires=docker.socket [Service] Type=notify NotifyAccess=main # 添加的這一行 ExecStartPost=/sbin/iptables -P FORWARD ACCEPT # 修改的這一行 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always [Install] WantedBy=multi-user.target
然后退出配置文件,重新加載配置文件并重啟 Docker 服務:
$ sudo systemctl daemon-reload $ sudo service docker restart
修改配置文件的方法,可以讓我們在使用 Docker 時不需要關注用戶所屬的組。但是,修改配置文件需要謹慎,不當的修改可能會導致 Docker 服務出現問題。