Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有sudo的情况下在ubuntu上运行docker_Docker_Ubuntu - Fatal编程技术网

如何在没有sudo的情况下在ubuntu上运行docker

如何在没有sudo的情况下在ubuntu上运行docker,docker,ubuntu,Docker,Ubuntu,我想通过运行以下命令来运行docker: docker build -t getting-started . 我得到以下错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 邮递http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D和cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcus=

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

docker build -t getting-started .
我得到以下错误:

尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 邮递http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D和cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcus=&cpusetcus=&cpusetmems=&cpushares=0&dockerfile=dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=0&t=getting start&target=&ulimits=null&version=1:dial:unix/var/run/dockers/dockers=0否认


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

TL;DR:与网上许多教程所建议的不同(将您的用户帐户添加到
docker
组,这很危险!请参见下文),您可以在
.bashrc
中添加别名,以避免键入
sudo
,同时使用“密码提示保护”

更准确地说:Docker守护程序套接字由root:Docker拥有:

$ls-l/var/run/docker.sock
srw rw----1根docker 0 janv。28 14:23/var/run/docker.sock
因此,使用此默认设置,您需要通过
sudo
预先添加所有docker CLI命令

要避免这种情况,您可以:

  • $USER
    添加到
    docker
    组(但在个人工作站上这样做风险很大,因为这相当于在没有任何
    sudo
    密码提示或审核的情况下为用户帐户提供root权限)

    另请参见Docker官方文档中的此页:

  • 或者,为了自动预编
    sudo
    ,但避免手动键入
    sudo docker
    ,一个好的做法是在
    ~/.bashrc
    文件中添加以下别名(如需详细信息,请参阅):

    \uuuu docker(){
    如果[[“${BASH_SOURCE[*]}”=~“BASH completion”];则
    docker“$@”
    其他的
    sudo docker“$@”
    fi
    }
    别名docker=\uu docker
    
    然后,您可以通过打开一个新终端并键入以下内容来测试:

    $docker run--rm-it debian:10#询问您的密码
    $\docker run--help由于“\”而不会询问您的密码
    

  • 您应将用户添加到docker组:

    sudo usermod -aG docker $USER
    

    之后,您可能需要重新启动Ubuntu

    感谢@BMitch找到该副本!但我在这里提出的答案似乎根本没有在复制线程中提及。你对此有什么建议吗?(例如,在那里交叉张贴我的答案?或者什么也不做:)@ErikMD如果你的答案适用于那里,那么我会在那里张贴。当只有一个问题尚未解决时,我看不到有重复答案的问题。好的,完成,谢谢@BMitch:)