Ubuntu docker swarm错误“;docker:无法连接到docker守护进程。docker守护进程是否在此主机上运行?";

Ubuntu docker swarm错误“;docker:无法连接到docker守护进程。docker守护进程是否在此主机上运行?";,docker,vagrant,ubuntu-14.04,consul,docker-swarm,Docker,Vagrant,Ubuntu 14.04,Consul,Docker Swarm,我试图在一些Ubuntu14.04漫游框上设置DockerSwarm和Consor,但是docker守护进程有一个问题。我已经有一个progrium/Consor容器和一个swarm manager容器在运行。172.28.128.3是运行一切的主机器,172.28.128.4是我试图启动docker swarm容器的机器。以下是我的命令和输出: vagrant@ubuntu-14:~$ docker -H=172.28.128.4:2375 run -d swarm join \ > -

我试图在一些Ubuntu14.04漫游框上设置DockerSwarm和Consor,但是docker守护进程有一个问题。我已经有一个progrium/Consor容器和一个swarm manager容器在运行。172.28.128.3是运行一切的主机器,172.28.128.4是我试图启动docker swarm容器的机器。以下是我的命令和输出:

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 boot2docker上相同的方式启动守护程序时,会给出以下输出:

vagrant@ubuntu-14:~$ eval "$(docker-machine env default)"
docker-machine: command not found
更新:这里是
$sudo docker info
$docker info
的输出(除了下面描述的一行之外,它们完全相同)

这两个命令之间的唯一区别是,
$docker info
具有以下
网络条目:

 Network: host bridge null
在我的第二台机器上,两个命令输出之间根本没有区别

更新:添加
DOCKER_OPTS=“-H”后tcp://0.0.0.0:2375 -Hunix:///var/run/docker.sock“
到我的工作机器上的文件/etc/default/docker,并在我的工作服务器上重新启动docker服务
sudo docker restart
swarm工作正常。
感谢JorelC提供的解决方案。

您必须配置所有要通过tcp使用docker的机器,以便在tcp模式下运行。在您的远程计算机(您的问题是172.28.128.4)中,编辑/etc/default/docker文件,并在docker\u选项中添加类似的内容:

之后,您需要重新启动服务:

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

这两个命令的输出是什么:
$sudo docker info
$docker info
?我无法将所有输出都放在一个注释中,因此我更新了上面的命令,以包含
$sudo docker info
$docker info
的输出。它们都有效吗?是的,两个命令运行时都没有任何问题
#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 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