Linux Docker命令可以';无法连接到Docker守护进程
我想搬到Docker去,所以我才开始胡闹。我已经在VirtualBox Ubuntu 15.10(狡猾的狼人)上安装了Docker,然后我尝试运行一个基本的Docker映像:Linux Docker命令可以';无法连接到Docker守护进程,linux,ubuntu,docker,daemon,Linux,Ubuntu,Docker,Daemon,我想搬到Docker去,所以我才开始胡闹。我已经在VirtualBox Ubuntu 15.10(狡猾的狼人)上安装了Docker,然后我尝试运行一个基本的Docker映像: $ docker run --name mynginx1 -P -d nginx Cannot connect to the Docker daemon. Is the docker daemon running on this host? 所以我检查了Docker是否在运行: $ sudo service docker
$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
所以我检查了Docker是否在运行:
$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
Docs: https://docs.docker.com
Main PID: 7542 (docker)
CGroup: /system.slice/docker.service
└─7542 /usr/bin/docker daemon -H fd://
nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
这表明Docker守护程序实际上已经在运行,但我只是手动启动了Docker守护程序:
$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock
INFO[0000] [graphdriver] using prior storage driver "aufs"
INFO[0000] Firewalld running: false
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address
WARN[0000] Your kernel does not support swap memory limit.
INFO[0000] Loading containers: start.
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0
然后我再次尝试运行该图像,但结果相同:
$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
我试着执行命令,但没用。我做错了什么 在Ubuntu上安装docker后,我运行了以下命令:
sudo service docker start
sudo mv /var/lib/dpkg/info/docker-ce* /tmp
您试过了吗?以root身份输入(sudo su
)并尝试以下操作:
unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx
我在这里也遇到了同样的问题,docker命令只能作为root用户运行,并且这个docker\u主机也是空的
PS:还要注意Ubuntu上的应用程序是使用他们的apt存储库(即使在15.10版),而不是使用“wget”的东西。我也有同样的问题。两天来一直在努力解决这个问题
只有当我这样做时,它才起作用:
根据,如果尚未添加Docker密钥,则需要使用以下方法添加Docker密钥:
$sudo wget-qO-https://get.docker.com/gpg |sudo apt按键添加-
然后确保您使用以下方式向自己授予docker权限:
$sudo usermod-aG docker$USER
希望这对您也有帮助。您需要将当前用户添加到docker组,如下所示:
sudo usermod -aG docker $(whoami)
然后注销并再次登录系统或重新启动系统。
由docker版本进行测试
有关如何安装docker engine的更多信息,请按照以下说明进行操作:当我忘记使用sudo
运行docker
命令时,我从问题标题中得到错误:
sudo docker run…
[Ubuntu15.10]通常,以下命令起作用:
sudo service docker restart
对于docker似乎已经在运行的情况,这将代替docker start
如果这样做有效,那么按照建议和另一个答案,如果您尚未将自己添加到docker组中,请通过运行:
sudo usermod -aG docker <your-username>
如果输出看起来像:docker stop/waiting
而不是docker start/running,则进程15378
显然表示docker未处于活动状态。在这种情况下,请确保从以下内容开始:
sudo service docker start
而且,和以前一样,您很可能会很乐意去做。在安装完所有内容并启动服务后,请尝试关闭您的终端并再次打开,然后尝试拉取您的映像
编辑
我还遇到了这个问题,如果上面的解决方案不起作用,请尝试下面的命令
sudo mv /var/lib/docker/network/files/ /tmp/dn-bak
tail -5f /var/log/upstart/docker.log
考虑
如果上面的命令起作用,您可能遇到了网络docker问题,无论如何这可以解决它,要确认这一点,请参阅下面带有命令的日志
sudo mv /var/lib/docker/network/files/ /tmp/dn-bak
tail -5f /var/log/upstart/docker.log
如果输出有类似的内容
FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints
/var/run/docker.sock is up
您确实遇到了网络问题,但是我还不知道下次重新启动(更新,2个月后不再出现问题)您的操作系统是否会再次出现此问题,以及它是错误还是安装问题
我的docker版本
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
将用户添加到docker组
- 如果docker组尚不存在,请添加该组:
sudo groupadd docker
- 将连接的用户“${user}”添加到docker组:
sudo gpasswd-a${USER}docker
- 重新启动Docker守护程序:
sudo服务docker重启
- 执行
newgrp docker
或注销/登录以激活对的更改
小组
这个问题目前在谷歌搜索中排名第三。在我的Linux系统上做了一些关于解决这个问题的研究之后,我想我会写下这个答案。最初的帖子说问题出在Ubuntu上,但我在使用Fedora时也遇到过这个问题。考虑到这一点,下面是我为解决问题所做的
论软呢帽22
安装Docker:
$> curl -fsSL https://get.docker.com/ | sh
安装Docker后:
$> curl -fsSL https://get.docker.com/ | sh
需要将用户添加到docker组
$> sudo usermod -aG docker
需要启动docker守护进程
$> sudo service docker start
您可以将守护进程设置为在启动时启动
$> sudo chkconfig docker on
您可以验证docker服务是否正在运行
$> service docker status
还有最后一次检查
$> docker run hello-world
我在AmazonEC2实例上遇到了同样的错误。重新启动实例后,该问题已得到修复。请尝试在正在运行的命令中使用“sudo” 对于OSX:
在打开docker并通过Quickstart终端()启动“默认”计算机后,您尝试docker命令并获得此“无法连接到docker守护程序”消息,结果表明您需要设置一些环境变量。:
eval“$(docker机器环境默认值)”
然后用docker run hello world试试看是否一切正常。对于那些已经尝试重新启动计算机的人,请按照中的说明取消环境变量docker\u HOST的设置,其他人只需按照
sudo service docker restart
只有这样,即使在重新启动机器后,我也能做到这一点。我在运行docker时也遇到了同样的问题
您可以作为sudo用户运行命令:
sudo docker ***your command here***
对于Ubuntu:
我更新docker时发生的事。
您需要取消对服务和套接字的屏蔽,然后重新启动服务。
以下几点对我很有用:
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
幕后发生了什么
systemd还可以通过将单元链接到/dev/null,自动或手动将其标记为完全不可启动。这称为掩蔽装置,可通过mask命令实现
sudo systemctl mask docker.service
您可以使用以下方法检查屏蔽服务的列表:
sudo systemctl list-unit-files
要启用自动/手动启动服务,您需要使用以下方法解除其屏蔽:
sudo sytemctl unmask docker.service
现在,服务将如下图所示启用
docker绑定到unix套接字时
DOCKER_OPTS="-H tcp://0.0.0.0:2375"
ls -l /var/run/docker.sock
sudo chown *your-username* /var/run/docker.sock
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps
# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker
# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf
# restart service
systemctl daemon-reload
service docker restart
sudo mv /var/lib/dpkg/info/docker-ce* /tmp