docker 建立跨主机网络
参考:
https://learnku.com/articles/49372
建立跨主机网络
(在192.168.89.133上)
创建集群
$ sudo docker swarm init Swarm initialized: current node (t4ydh2o5mwp5io2netepcauyl) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-4dvxvx4n7magy5zh0g0de0xoues9azekw308jlv6hlvqwpriwy-cb43z26n5jbadk024tx0cqz5r 192.168.1.5:2377
其他节点加入集群
$ sudo docker swarm join-token manager To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-60am9y6axwot0angn1e5inxrpzrj5d6aa91gx72f8et94wztm1-7lz0dth35wywekjd1qn30jtes 192.168.1.5:2377
在创建 Overlay 网络时,我们要加入 --attachable 选项以便不同机器上的 Docker 容器能够正常使用到它。
在创建了这个网络之后,我们可以在任何一个加入到集群的 Docker 实例上使用 docker network ls 查看一下其下的网络列表。我们会发现这个网络定义已经同步到了所有集群中的节点上。
docker network create --driver overlay --attachable mongodbs |
从机加入集群
从机加入网络134,137执行
[root@localhost ~]# docker swarm join --token SWMTKN-1-4spky515ga3185jcq2sbelzgw3gkqqp1tj40bc8wqijc2byaxi-bblb42s2fbuz78c51wb41htp0 192.168.89.133:2377 This node joined a swarm as a manager.==表示加入成功 |
查看网络信息
应该能看到133上创建的网络mongodbs
docker network list |
在其他机器执行上面生成的加入docker集群命令错误提示:
服务器时间不一致导致问题。
[root@localhost ~]# docker swarm join --token SWMTKN-1-62ax8v7r4fo7trjo133aaqely0wf3p6toxvhew1nvz450lb620-44490y0x4en8rtgzvadibq8rx 192.168.89.133:2377 Error response from daemon: error while validating Root CA Certificate: x509: certificate has expired or is not yet valid |
解决
原理:docker swarm node之间是加密传输,docker swarm init时会创建CA证书。这里提示证书过期,可能是主机当前时间不对。
解决:sudo ntpdate time.nist.gov 同步一下时间(确保安装了ntpdate 命令)
|