多个docker deamon导致群组问题

时间:2019-05-20 12:32:44

标签: docker docker-swarm

这是this answer的延续,涉及多个docker守护进程。

他们使用以下脚本创建第二个docker deamon:

#!/bin/sh
## name: altdocker.sh
set -e -x

: ${bridge=altdocker}
: ${base=$HOME/$bridge}

# Set up bridge network:
if ! ip link show $bridge > /dev/null 2>&1
then
   sudo ip link add name $bridge type bridge
   sudo ip addr add ${net:-"10.20.30.1/24"} dev $bridge
   sudo ip link set dev $bridge up
fi

sudo dockerd \
  --bridge=$bridge \
  --data-root=$base.data \
  --exec-root=$base.exec \
  --host=unix://$base.socket \
  --pidfile=$base.pid

现在,我将DOCKER_HOST设置为创建的unix套接字。我用docker swarm init初始化docker swarm完全没有问题。但是,一旦我用docker stack deploy -c myfile.yaml创建了堆栈,就必须解决以下问题:

  • DNS解析不起作用(服务无法通过 主机名,但是可以使用容器ip ping)
  • 与默认docker deamon容器内部的连接相比,与Internet的连接确实很慢。

更新

再深入一点,我在the documentation中看到了为了使用群体模式而应启用的配置:

  • 用于容器网络发现的端口7946 TCP / UDP。
  • 用于容器入口网络的端口4789 UDP。

我意识到是因为我看到了dockerd给出的错误消息:

 ERRO[2019-05-21T14:46:02.807800662+02:00] error in agentInit: failed to create memberlist: Could not set up network transport: failed to obtain an address: Failed to start TCP listener on "0.0.0.0" port 7946: listen tcp 0.0.0.0:7946: bind: address already in use 

是否可以更改这些端口? (因为这可能是原因)

0 个答案:

没有答案