美文网首页
不同主机上容器之间通信 Docker + Swarm

不同主机上容器之间通信 Docker + Swarm

作者: GongZH丶 | 来源:发表于2019-04-09 15:08 被阅读0次

    在单台主机上的不同容器之间可以通过 docker inspect 查看IP地址互相访问,因为这些容器都在Docker0网卡下。

    不同主机之间运行的容器显然不可能之间互联的,在 https://docs.docker.com/network/network-tutorial-overlay/#use-an-overlay-network-for-standalone-containers
    上找到了解决方法。

    环境:

    1. Windows 10 专业版,开启hyper-v
    2. 在hyper-v中启动三台Ubuntu(ubuntu-18.04.2-desktop-amd64)的 虚拟机。
    3. 在三台虚拟机上都安装了Docker(Docker version 18.06.3-ce, build d7080c1)。

    开始

    ubuntu1: 172.17.123.212
    ubuntu2: 172.17.123.213
    ubuntu3: 172.17.123.211

    1. 在ubuntu1上,初始化docker swarm 集群。
    
    //docker swarm init --advertise-addr=<IP-ADDRESS-OF-MANAGER>
    docker swarm init    // initialize the swarm. If the host only has one network interface, the --advertise-addr flag is optional.
    
    
    1. 在ubuntu2和ubuntu3上,分别执行如下命令,加入集群。
    
    docker swarm join --token SWMTKN-1-2st8r75yp64rcpt8gao7xetofhkqv7f7d1k5iz77ndubcstisn-1fuo8sthugzimukjeewqo08xf 172.17.123.212:2377
    
    

    执行完后,此时,ubuntu1是manager节点,ubuntu2和ubuntu3是worker节点

    3.在ubuntu1这个manager节点中,执行

    
    docker node ls
    
    

    可以看到


    image.png

    在任意节点执行

    docker network ls
    
    

    可以看到


    image.png
    1. 在manager节点执行
    docker network create -d overlay nginx-net
    
    

    5.在manager节点执行

    docker service create \
      --name my-nginx \
      --publish target=80,published=80 \
      --replicas=5 \
      --network nginx-net \
      nginx
    
    

    这就在这个集群中运行了5个容器。可以分别在每个节点查看

    在不同主机上的容器之间通信

    1. 初始化swarm集群
    2. 在manager节点创建一个overlay网络
    3. 在manager节点上创建一个容器,加入这个网络
    4. 在worker节点上创建一个容器,加入这个网络
    5. 这两个容器之间可以ping通
    docker swarm init    //manager节点
    
    docker swarm join --token <your_token> <your_ip_address>:2377  //worker节点
    
    docker network create --driver=overlay --attachable test-net    //manager节点
    
    docker run -it --name alpine1 --network test-net alpine   //manager节点
    
    docker run -dit --name alpine2 --network test-net alpine   //worker节点
    
    ping -c 2 alpine2   //manager节点
    
    

    相关文章

      网友评论

          本文标题:不同主机上容器之间通信 Docker + Swarm

          本文链接:https://www.haomeiwen.com/subject/jbbbiqtx.html