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 命令)

原文地址:https://www.cnblogs.com/a393060727/p/13668132.html