在虚拟环境中使用docker命令失败
我正在使用ubuntu xenial安装的docker。然后,我为python项目创建了虚拟环境,但docker命令无法运行。错误是: 正在运行在虚拟环境中使用docker命令失败,docker,virtualenv,Docker,Virtualenv,我正在使用ubuntu xenial安装的docker。然后,我为python项目创建了虚拟环境,但docker命令无法运行。错误是: 正在运行docker info Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix
docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/run/docker.sock: connect: permission denied
正在运行docker docker build-t dockerhub.domain.com。
ERRO[0000] failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial unix /var/run/docker.sock: connect: permission denied
context canceled
它不想用sudo运行这些命令,因为我已经将我的用户添加到docker。我可以在虚拟环境之外运行docker命令,但在环境中失败。有什么帮助吗
编辑: 通过以下方式创建venv:
conda create --name myenv
我以这种方式添加了我的用户:
sudo usermod -aG docker ${USER}
id-nG的输出(我的用户是我的用户名)
使用usermod
命令,仅在您注销并登录时生效(或者使用source
命令)
然后,id-nG
打印这些组:(我的用户是我的用户名)
每件事都很好。使用usermod
命令,只有在您注销并登录(或者使用source
命令)时才生效
然后,id-nG
打印这些组:(我的用户是我的用户名)
每件事都很好。请分享确切的场景,包括(a)如何创建和输入venv;(b) 证明您可以在venv之外使用Docker而无需sudo
(因为这可能只是因为您的用户不在Docker
组中,这不是一个与virtualenv相关的问题)。@DanilaKiver感谢您的提问。我在问题中添加了我的答案作为新的编辑。(b) 还使用docker info
命令进行测试,并输出我的docker和系统信息,这表明它工作正常。该id
命令表示您不在docker
组中。您是否在运行usermod
后注销并再次登录?@DavidMaze,否。所有命令都在一个会话中运行。@DavidMaze,我认为您解决了问题!现在我再次尝试,发现在组的末尾添加了docker
组,执行id-nG
命令。需要注销才能生效。请分享具体场景,包括(a)如何创建和输入您的venv;(b) 证明您可以在venv之外使用Docker而无需sudo
(因为这可能只是因为您的用户不在Docker
组中,这不是一个与virtualenv相关的问题)。@DanilaKiver感谢您的提问。我在问题中添加了我的答案作为新的编辑。(b) 还使用docker info
命令进行测试,并输出我的docker和系统信息,这表明它工作正常。该id
命令表示您不在docker
组中。您是否在运行usermod
后注销并再次登录?@DavidMaze,否。所有命令都在一个会话中运行。@DavidMaze,我认为您解决了问题!现在我再次尝试,发现在组的末尾添加了docker
组,执行id-nG
命令。需要注销才能生效。
my_user adm cdrom sudo dip plugdev lpadmin sambashare
my_user adm cdrom sudo dip plugdev lpadmin sambashare docker