18 - Docker network第四讲-网络别名(Docker系列)

本文章来自【知识林】

在前面例子中容器与容器之间的通信都是通过网络中的IP地址来完成的,这种方式显然是不合理的,因为这个IP地址可能会在启动容器时发生变化,而且也比较难记。

那么解决这一问题的方法就是使用网络别名,容器在网络是是允许有别名的,且这个别名在所在网络中都可以直接访问,这就类似局域网在各物理机的主机名。

  • 启动容器指定网络及网络别名
docker run -d -it --name c4 --network test-net --network-alias c4-alias centos /bin/bash -c "while true; do echo hello; sleep 1; done"
e51b0ccd566709595c136d3ec41a72652843880184052324e5702bbdc82e0c22

说明:使用--network来指定网络,使用--network-alias来指定网络别名,也就是说c4这个容器在test-net这个网络中的别名是c4-alias,在这个网络中的其他容器可以通过这个别名来访问该容器。

  • 查看网络中的容器
C:\Users\zsl-pc>docker network inspect test-net
…………
"Containers": {
    "0968be0ab042ec35121774227bbecf5c5fd8a1faf0f7fd3b5ac0069af64e7709": {
        "Name": "c3",
        "EndpointID": "1a2062123d61774cd49d074f5dc8705fd0189c24657c7eb2002de4ad908810f0",
        "MacAddress": "02:42:ac:12:00:03",
        "IPv4Address": "172.18.0.3/16",
        "IPv6Address": ""
    },
    "7117f84edc269c5f61052a136791e775e26372c2b977db77081cd78533e5721e": {
        "Name": "c2",
        "EndpointID": "f3c3a919d92c1213da1a13879e75e4e2fe09ed619c65abad0751f8e76f19c2d9",
        "MacAddress": "02:42:ac:12:00:02",
        "IPv4Address": "172.18.0.2/16",
        "IPv6Address": ""
    },
    "e51b0ccd566709595c136d3ec41a72652843880184052324e5702bbdc82e0c22": {
        "Name": "c4",
        "EndpointID": "ab60608e5f26d370b71eb3f4e051f133649de35dff1bae0dcbec17684dca7cb5",
        "MacAddress": "02:42:ac:12:00:04",
        "IPv4Address": "172.18.0.4/16",
        "IPv6Address": ""
    }
}
…………

说明:可以看出现在在test-net中已经有三个容器了。

  • 查看容器详情信息
C:\Users\zsl-pc>docker inspect c4

…………
"Networks": {
    "test-net": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": [
            "c4-alias",
            "e51b0ccd5667"
        ],
        "NetworkID": "39b38d32553cb89085bccb6d1359e3e1ebba570147c31c64c58e40d7967f9e50",
        "EndpointID": "ab60608e5f26d370b71eb3f4e051f133649de35dff1bae0dcbec17684dca7cb5",
        "Gateway": "172.18.0.1",
        "IPAddress": "172.18.0.4",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:12:00:04"
    }
}
…………

说明:通过查看c4的详情信息可以看出,在Networks里面可以看到该容器所拥有的网络为test-net(这是使用--network来指定的),在test-net里面可以看到Aliases里面有个c4-alias(这是使用--network-alias来指定的),说明c4的网络别名已经设置好了。

  • 通过网络别名与其他容器通信

进入test-net网络中的任意容器(这里选择c3)测试与c4通信:

C:\Users\zsl-pc>docker exec -it c3 /bin/bash
[root@0968be0ab042 /]# ping -w 4 172.18.0.4
PING 172.18.0.4 (172.18.0.4) 56(84) bytes of data.
64 bytes from 172.18.0.4: icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from 172.18.0.4: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from 172.18.0.4: icmp_seq=3 ttl=64 time=0.122 ms
64 bytes from 172.18.0.4: icmp_seq=4 ttl=64 time=0.079 ms

--- 172.18.0.4 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.071/0.086/0.122/0.022 ms
[root@0968be0ab042 /]# ping -w 4 c4-alias
PING c4-alias (172.18.0.4) 56(84) bytes of data.
64 bytes from c4.test-net (172.18.0.4): icmp_seq=1 ttl=64 time=0.040 ms
64 bytes from c4.test-net (172.18.0.4): icmp_seq=2 ttl=64 time=0.060 ms
64 bytes from c4.test-net (172.18.0.4): icmp_seq=3 ttl=64 time=0.117 ms
64 bytes from c4.test-net (172.18.0.4): icmp_seq=4 ttl=64 time=0.084 ms

--- c4-alias ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.040/0.075/0.117/0.029 ms
[root@0968be0ab042 /]#

说明:可以看出在c3容器中可以通过c4的IP地址或网络别名与之通信。

  • connect的方式来指定网络别名
docker network connect --alias c1-alias test-net c1

说明:使用docker network connect来使容器加入指定网络,通过--alias来指定该容器在指定网络中的别名。

进入c2进进行测试:

C:\Users\zsl-pc>docker exec -it c2 /bin/bash
[root@7117f84edc26 /]# ping -w 2 c1-alias
PING c1-alias (172.18.0.5) 56(84) bytes of data.
64 bytes from c1.test-net (172.18.0.5): icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from c1.test-net (172.18.0.5): icmp_seq=2 ttl=64 time=0.297 ms

--- c1-alias ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.056/0.176/0.297/0.121 ms
[root@7117f84edc26 /]# ping -w 2 c4-alias
PING c4-alias (172.18.0.4) 56(84) bytes of data.
64 bytes from c4.test-net (172.18.0.4): icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from c4.test-net (172.18.0.4): icmp_seq=2 ttl=64 time=0.060 ms

--- c4-alias ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.060/0.063/0.066/0.003 ms

网络别名在整个网络中都是有效的,即在同网络中的任意容器都可通过网络别名访问对应容器。

本文章来自【知识林】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容