在公司使用docker多主机互联时碰到了各种坑。搞清楚后才发现如此简单,以下是根据实际经验的总结.

版本信息

Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:22 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:19:08 2018
  OS/Arch:          linux/amd64
  Experimental:     false

在主节点上

# 初始化集群
docker swarm init

生成token

docker swarm join-token worker
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-3jsci44ma4vq5lu62cw9qb2t91n1du0q8vpl2p0wzkcdk2smfi-bernmboygqmk6idgt5zc2l9z6 192.168.0.244:2377

在其它节点添加到集群

docker swarm join --token SWMTKN-1-3jsci44ma4vq5lu62cw9qb2t91n1du0q8vpl2p0wzkcdk2smfi-bernmboygqmk6idgt5zc2l9z6 192.168.0.244:2377

在任意节点创建网络

docker network create -d overlay --attachable net

此时,在其它节点执行 docker network ls, 可以看到该网络已同步到所有节点,不同节点的主机指定该网络创建的容器之间网络已能互通。