提问者:小点点

如何在没有 sudo 的情况下在 ubuntu 上运行 docker [复制]


我想通过运行以下命令来运行我的 docker:

docker build -t getting-started .

我收到以下错误:

尝试连接到 Docker 守护程序套接字时被拒绝 unix:///var/run/docker.sock:发布 http:///var/run/docker.sock/v1.24/build?buildargs={}

我的问题是:如何在不添加“sudo”的情况下在 ubuntu 上运行 docker?


共2个答案

匿名用户

您应该将用户添加到 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 '\'