【问题标题】:Ubuntu docker swarm error "docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?."Ubuntu docker swarm 错误“docker:无法连接到 Docker 守护程序。docker 守护程序是否在此主机上运行?”
【发布时间】:2016-05-26 00:20:49
【问题描述】:

我正在尝试在某些 Ubuntu 14.04 vagrant box 上使用 consul 设置 docker swarm,但是 docker 守护进程存在问题。我已经有一个正在运行的 progrium/consul 容器和一个正在运行的 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 没有其他问题,尝试以与我在 mac 上相同的方式启动守护进程 boot2docker 给出以下输出:

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 的解决方案。

【问题讨论】:

  • 这两个命令输出什么:$sudo docker info$docker info
  • 我无法将所有输出都放在评论中,所以我更新了上面的内容以包含 $sudo docker info$docker info 的输出
  • 他们都工作了吗?
  • 是的,两个命令都运行没有任何问题

标签: docker vagrant ubuntu-14.04 consul docker-swarm


【解决方案1】:

您必须通过 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

测试它是否工作

【讨论】:

    【解决方案2】:

    如果您使用的是实例的克隆或预装了 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2016-07-11
      • 2014-10-13
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多