Ubuntu docker 集群错误 "docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?."
Ubuntu docker swarm error "docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?."
我正在尝试在某些 Ubuntu 14.04 vagrant boxes 上设置 docker swarm with consul,但是 docker 守护程序存在问题。我已经有一个 progrium/consul 容器 运行 和一个群管理器容器 运行。 172.28.128.3 是主机 运行 一切,172.28.128.4 是我试图在其上启动 docker 群容器的机器。这是我的命令和输出:
vagrant@ubuntu-14:~$ docker -H=172.28.128.4:2375 run -d swarm join \
> --advertise=172.28.128.4:2375 \
> consul://172.28.128.3:8500/
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
docker 没有其他问题,并尝试以与我在 macs boot2 上相同的方式启动守护程序 docker 给出以下输出:
vagrant@ubuntu-14:~$ eval "$(docker-machine env default)"
docker-machine: command not found
更新: 这里是 $sudo docker info
和 $docker info
的输出(它们完全相同,除了下面描述的一行)
vagrant@ubuntu-14:~$ sudo docker info
Containers: 8
Running: 2
Paused: 0
Stopped: 6
Images: 8
Server Version: 1.11.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 81
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null host bridge
Kernel Version: 3.13.0-24-generic
Operating System: Ubuntu 14.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 993.9 MiB
Name: ubuntu-14
ID: BBEM:JVHD:UXV7:AGQR:ITUY:3KGT:K4RS:7KSR:ESCJ:2VZQ:QTOG:J26U
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
这两个命令之间的唯一区别是 $docker info
具有 Network:
的以下条目
Network: host bridge null
在我的第二台机器上,两个命令输出之间没有任何区别。
更新:将 DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
添加到我的工作机器上的文件 /etc/default/docker 并重新启动我的工作服务器上的 docker 服务后 sudo docker restart
swarm 工作正常。
谢谢 JorelC 的解决方案。
您必须将所有要通过 tcp 使用 docker 的机器配置为在 tcp 模式下使用 运行。在你的远程机器(你的问题是 172.28.128.4)中,编辑 /etc/default/docker 文件并在 DOCKER_OPTS:
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
之后,您需要重启服务:
sudo service docker restart
并且您应该通过 tcp 使用 docker。从您的客户端计算机尝试:
docker -H=172.28.128.4:2375 info
测试它是否有效
如果您使用的是实例的克隆或预安装了 docker 的实例映像,也可能会出现问题。
要解决这个问题,请使用以下 shell 脚本:
#UNINSTALL
sudo apt-get purge -y docker-engine
sudo apt-get autoremove -y --purge docker-engine
#CLONES
sudo rm /etc/docker/key.json
#INSTALL
sudo apt-get install -y curl
sudo curl -sSL http://get.docker.com | sudo sh
sudo usermod -aG docker $(whoami)
sudo su root
如果你想使用最新版本的 docker swarm(1.12 内置了 docker swarm),请使用以下脚本:
# DOCKER 1.12.0
sudo apt-get update
sudo apt-get purge -y lxc-docker docker-engine
sudo apt-get autoremove -y --purge docker-engine
sudo curl -fsSL https://experimental.docker.com/ | sudo sh
sudo chmod 777 /etc/default/docker
echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' > /etc/default/docker
sudo chmod 755 /etc/default/docker
sudo rm /etc/docker/key.json
sudo service docker restart
sudo usermod -aG docker $(whoami)
sudo su root
我正在尝试在某些 Ubuntu 14.04 vagrant boxes 上设置 docker swarm with consul,但是 docker 守护程序存在问题。我已经有一个 progrium/consul 容器 运行 和一个群管理器容器 运行。 172.28.128.3 是主机 运行 一切,172.28.128.4 是我试图在其上启动 docker 群容器的机器。这是我的命令和输出:
vagrant@ubuntu-14:~$ docker -H=172.28.128.4:2375 run -d swarm join \
> --advertise=172.28.128.4:2375 \
> consul://172.28.128.3:8500/
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
docker 没有其他问题,并尝试以与我在 macs boot2 上相同的方式启动守护程序 docker 给出以下输出:
vagrant@ubuntu-14:~$ eval "$(docker-machine env default)"
docker-machine: command not found
更新: 这里是 $sudo docker info
和 $docker info
的输出(它们完全相同,除了下面描述的一行)
vagrant@ubuntu-14:~$ sudo docker info
Containers: 8
Running: 2
Paused: 0
Stopped: 6
Images: 8
Server Version: 1.11.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 81
Dirperm1 Supported: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null host bridge
Kernel Version: 3.13.0-24-generic
Operating System: Ubuntu 14.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 993.9 MiB
Name: ubuntu-14
ID: BBEM:JVHD:UXV7:AGQR:ITUY:3KGT:K4RS:7KSR:ESCJ:2VZQ:QTOG:J26U
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
这两个命令之间的唯一区别是 $docker info
具有 Network:
Network: host bridge null
在我的第二台机器上,两个命令输出之间没有任何区别。
更新:将 DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
添加到我的工作机器上的文件 /etc/default/docker 并重新启动我的工作服务器上的 docker 服务后 sudo docker restart
swarm 工作正常。
谢谢 JorelC 的解决方案。
您必须将所有要通过 tcp 使用 docker 的机器配置为在 tcp 模式下使用 运行。在你的远程机器(你的问题是 172.28.128.4)中,编辑 /etc/default/docker 文件并在 DOCKER_OPTS:
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
之后,您需要重启服务:
sudo service docker restart
并且您应该通过 tcp 使用 docker。从您的客户端计算机尝试:
docker -H=172.28.128.4:2375 info
测试它是否有效
如果您使用的是实例的克隆或预安装了 docker 的实例映像,也可能会出现问题。
要解决这个问题,请使用以下 shell 脚本:
#UNINSTALL
sudo apt-get purge -y docker-engine
sudo apt-get autoremove -y --purge docker-engine
#CLONES
sudo rm /etc/docker/key.json
#INSTALL
sudo apt-get install -y curl
sudo curl -sSL http://get.docker.com | sudo sh
sudo usermod -aG docker $(whoami)
sudo su root
如果你想使用最新版本的 docker swarm(1.12 内置了 docker swarm),请使用以下脚本:
# DOCKER 1.12.0
sudo apt-get update
sudo apt-get purge -y lxc-docker docker-engine
sudo apt-get autoremove -y --purge docker-engine
sudo curl -fsSL https://experimental.docker.com/ | sudo sh
sudo chmod 777 /etc/default/docker
echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' > /etc/default/docker
sudo chmod 755 /etc/default/docker
sudo rm /etc/docker/key.json
sudo service docker restart
sudo usermod -aG docker $(whoami)
sudo su root