zoukankan      html  css  js  c++  java
  • docker容器间互联

    通过容器名称互联

    即在同一个宿主机上的容器之间可以通过自定义的容器名称相互访问,比如一个业务前端静态页面是使用nginx,动态页面使用的是tomcat,由于容器在启动的时候其内部IP地址是DHCP 随机分配的,所以如果通过内部访问的话,自定义名称是相对比较固定的,因此比较适用于此场景。

    启动第一个容器

    [root@mysql app1]# docker run -itd --name tomcat-web -p 8801:8080 tomcat-web:app1 
    b6471b4d34c6aeedcae1c1048632dc326acdd37d385b8afbaa3ace186e433c87

    查看容器的hosts文件

    [root@b6471b4d34c6 /]# cat /etc/hosts
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.17.0.2    b6471b4d34c6
    1.1.1.1 test.com

    启动第二个容器,与第一个容器关联

    [root@mysql app1]# docker run -itd --name nginx-link --link tomcat-web nginx:v1
    06f2bc85b84d65407f1cdb4ec73b3c8d3cff783883593185ac676064258703cb

    查看容器的hosts

    [root@06f2bc85b84d /]# cat /etc/hosts
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.17.0.2    tomcat-web b6471b4d34c6
    172.17.0.3    06f2bc85b84d

    测试连通性

    [root@06f2bc85b84d /]# ping tomcat-web
    PING tomcat-web (172.17.0.2) 56(84) bytes of data.
    64 bytes from tomcat-web (172.17.0.2): icmp_seq=1 ttl=64 time=0.077 ms
    64 bytes from tomcat-web (172.17.0.2): icmp_seq=2 ttl=64 time=0.089 ms
    ^C
    --- tomcat-web ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 31ms
    rtt min/avg/max/mdev = 0.077/0.083/0.089/0.006 ms
    [root@06f2bc85b84d /]# ping b6471b4d34c6
    PING tomcat-web (172.17.0.2) 56(84) bytes of data.
    64 bytes from tomcat-web (172.17.0.2): icmp_seq=1 ttl=64 time=0.040 ms
    64 bytes from tomcat-web (172.17.0.2): icmp_seq=2 ttl=64 time=0.090 ms
    ^C
    --- tomcat-web ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 59ms
    rtt min/avg/max/mdev = 0.040/0.065/0.090/0.025 ms

    通过自定义容器别名互联

    上一步骤中,自定义的容器名称可能后期会发生变化,那么一旦名称发生变化,程序之间也要随之发生变化,比如程序通过容器名称进行服务调用,但是容器名称发生变化之后再使用之前的名称肯定是无法成功调用,每次都进行更改的话又比较麻烦,因此可以使用自定义别名的方式解决,即容器名称可以随意更,只要不更改别名即可,具体如下:

    命令格式:

      docker run -d --name 新容器名称 --link 目标容器名称:自定义的名称 -p 本地端口:容器端口 镜像名称 shell命令

    [root@mysql ~]# docker run -d --name test-link --link tomcat-web:java-server nginx:v1
    41b4195710140a2ba45750dfd8bdf4953092d500d5edaf9034a83570890ab128
    
    [root@mysql ~]# docker exec -it test-link bash
    [root@41b419571014 /]# cat /etc/hosts
    127.0.0.1    localhost
    ::1    localhost ip6-localhost ip6-loopback
    fe00::0    ip6-localnet
    ff00::0    ip6-mcastprefix
    ff02::1    ip6-allnodes
    ff02::2    ip6-allrouters
    172.17.0.2    java-server b6471b4d34c6 tomcat-web
    172.17.0.4    41b419571014
    
    [root@41b419571014 /]# ping java-server
    PING java-server (172.17.0.2) 56(84) bytes of data.
    64 bytes from java-server (172.17.0.2): icmp_seq=1 ttl=64 time=0.052 ms
    64 bytes from java-server (172.17.0.2): icmp_seq=2 ttl=64 time=0.091 ms
    ^C
    --- java-server ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 10ms
  • 相关阅读:
    阿里笔试题—战报交流
    2 基于梯度的攻击——PGD
    1 基于梯度的攻击——FGSM
    0 对抗样本
    自然语言处理 复习笔记 3
    自然语言处理 复习笔记 2
    自然语言处理 复习笔记 1
    GRU
    1*1卷积核的作用
    BP原理
  • 原文地址:https://www.cnblogs.com/zh-dream/p/14921804.html
Copyright © 2011-2022 走看看