我想通过运行以下命令来运行我的 docker:
docker build -t getting-started .
我收到以下错误:
<块引用>尝试连接到 unix:///var/run/docker.sock 上的 Docker 守护进程套接字时被拒绝:发布 http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs =%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&ts=&version=target&version=&version=getssize=u拨 unix /var/run/docker.sock: 连接:权限被拒绝
我的问题是:如何在不添加“sudo”的情况下在 ubuntu 上运行 docker?
答案 0 :(得分:1)
您应该将用户添加到 docker 组:
sudo usermod -aG docker $USER
在您可能需要重新启动 Ubuntu 之后
答案 1 :(得分:0)
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
因此,使用此默认设置,您需要在所有 docker CLI 命令之前添加 sudo
。
为避免这种情况,您可以:
将 $USER
添加到 docker
组(但在您的个人工作站上执行此操作非常冒险,因为这相当于 为您的用户帐户提供 root 权限,而没有任何sudo
密码提示或审核).
另请参阅官方 Docker 文档中的此页面:
https://docs.docker.com/engine/security/#docker-daemon-attack-surface
或者,为了自动添加 sudo
但避免手动输入 sudo docker
,一个好的做法是在您的 ~/.bashrc
文件中添加以下别名(参见例如 {{3}详情):
__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 '\'