我想通过运行以下命令来运行我的 docker:
docker build -t getting-started .
我收到以下错误:
尝试连接到 Docker 守护程序套接字时被拒绝 unix:///var/run/docker.sock:发布 http:///var/run/docker.sock/v1.24/build?buildargs={}
我的问题是:如何在不添加“sudo”的情况下在 ubuntu 上运行 docker?
您应该将用户添加到 docker 组:
sudo usermod -aG docker $USER
在你可能不得不重新启动 Ubuntu 之后
TL;DR:与网络上的许多教程建议不同(将您的用户帐户添加到 docker
组,这是有风险的!见下文),您可以在 .bashrc
中添加一个别名以避免键入 sudo
,同时具有“密码提示保护”。
更准确地说:Docker 守护进程套接字由 root:docker 拥有:
$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 janv. 28 14:23 /var/run/docker.sock
因此,使用此默认设置,您需要通过 sudo
预置所有 docker CLI 命令。
要避免这种情况,您可以:
>
将$USER
添加到 docker
组(但在您的个人工作站上执行此操作是相当危险的,因为这相当于为您的用户帐户提供 root 权限,而无需任何 sudo
密码提示或审核)。
另请参阅官方 Docker 文档中的此页面:
https://docs.docker.com/engine/security/#docker-daemon-attack-surface
或者,要自动预置 sudo
但避免手动键入 sudo docker
,一个好的做法是在 ~/.bashrc
文件中添加以下别名(有关详细信息,请参阅此线程):
__docker() {
if [[ "${BASH_SOURCE[*]}" =~ "bash-completion" ]]; then
docker "$@"
else
sudo docker "$@"
fi
}
alias docker=__docker
然后,您可以通过打开一个新终端并键入以下内容来测试这一点:
$ docker run --rm -it debian:10 # asks your password
$ \docker run --help # does not ask your password thanks to '\'