[云原生专题-13]:容器 - 通过docker network 构建docker微服务网络:Docker network

网友投稿 248 2022-10-22

[云原生专题-13]:容器 - 通过docker network 构建docker微服务网络:Docker network

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

​目录​

​​前言:​​

​​第1章 主机TCP/IP端口与微服务端口之间进行映射​​

​​1.1 主机端口与docker端口映射示意图​​

​​1.2 端口映射参数​​

​​第2章 搭建容器之间的bridge-net,连接容器​​

前言:

docker最初与微服务绑定在一起的,在每个docker中,提供的一个微服务应用程序。无数个docker微服务组成一个网络,组成一个系统,每个微服务与微服务之间通过HTTP协议进行通信。本文就是探讨,如何构建docker微服务网络。

​​Docker 容器连接 | 菜鸟教程​​

第1章 主机TCP/IP端口与微服务端口之间进行映射

1.1 主机端口与docker端口映射示意图

1.2 端口映射参数

​(1)情形1​

runoob@runoob:~$ docker run -d -P training/webapp python app.pyfce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6drunoob@runoob:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMESfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

-P: 没有指定host主机的IP地址、端口和类型。

IP地址:主机的任意接口端口:随机映射,会选择一个没有映射的端口类型:取决于容器内部网络端口的类型,这里是tcp

​(2)情形2​

我们也可以使用 ​-p​ 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

​-P :​是容器内部端口​随机​映射到主机的端口。​-p : ​是容器内部端口绑定到​指定​的主机IP地址、主机端口和端口类型。

指定端口:

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0runoob@runoob:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMES33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartikfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

指定主机接口:

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857crunoob@runoob:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMES95c6ceef88ca training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5001->5000/tcp adoring_stonebraker33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartikfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

指定端口类型:

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22arunoob@runoob:~$ docker psCONTAINER ID IMAGE COMMAND ... PORTS NAMES6779686f06f6 training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5000->5000/udp drunk_visvesvaraya95c6ceef88ca training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5001->5000/tcp adoring_stonebraker33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartikfce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

第2章 搭建容器之间的bridge-net,连接容器

​(0)docker ps​

[root@i-kfhwt9y5 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESbff593077299 ubuntu "/bin/bash" 41 minutes ago Up 41 minutes test2717d262a6b3e ubuntu "/bin/bash" 41 minutes ago Up 41 minutes test1

​(1)建立docker bridge-net​

$ docker network create -d bridge test-net

​   -d​:参数指定 Docker 网络类型,有 bridge、overlay。

​(2)主机端安装ping和ifconfig工具​

yum install net-tools.x86_64 -y

​(3)进入docker内部,安装ping和ifconfig工具​

[root@i-kfhwt9y5 ~]# docker exec -it test1 /bin/bashroot@717d262a6b3e:/# apt-get updateroot@717d262a6b3e:/# apt install iputils-ping[root@i-kfhwt9y5 ~]# docker exec -it test2 /bin/bashroot@717d262a6b3e:/# apt-get updateroot@717d262a6b3e:/# apt install iputils-ping

​(4)显示test1和test2两个docker内部的IP地址​

root@bff593077299:/# ifconfigeth0: flags=4163 mtu 1500 inet 172.18.0.3 netmask 255.255.0.0 broadcast 172.18.255.255 ether 02:42:ac:12:00:03 txqueuelen 0 (Ethernet) RX packets 12570 bytes 21863616 (21.8 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7537 bytes 709199 (709.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0root@717d262a6b3e:/# ifconfigeth0: flags=4163 mtu 1500 inet 172.18.0.2 netmask 255.255.0.0 broadcast 172.18.255.255 ether 02:42:ac:12:00:02 txqueuelen 0 (Ethernet) RX packets 11892 bytes 21820204 (21.8 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6416 bytes 603425 (603.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

​(5)容器之间相互ping​

root@717d262a6b3e:/# ping test1PING test1 (172.18.0.2) 56(84) bytes of data.64 bytes from 717d262a6b3e (172.18.0.2): icmp_seq=1 ttl=64 time=0.012 ms64 bytes from 717d262a6b3e (172.18.0.2): icmp_seq=2 ttl=64 time=0.023 ms64 bytes from 717d262a6b3e (172.18.0.2): icmp_seq=3 ttl=64 time=0.035 msroot@717d262a6b3e:/# ping test2PING test1 (172.18.0.2) 56(84) bytes of data.64 bytes from 717d262a6b3e (172.18.0.3): icmp_seq=1 ttl=64 time=0.012 ms64 bytes from 717d262a6b3e (172.18.0.3): icmp_seq=2 ttl=64 time=0.023 ms64 bytes from 717d262a6b3e (172.18.0.3): icmp_seq=3 ttl=64 time=0.035 ms

至此,容器1和容器2之间通过bridge-net之间私网IP地址进行相互通信。

作者主页(​​文火冰糖的硅基工坊​​​):​​文火冰糖(王文兵)的博客_文火冰糖的硅基工坊​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java线程池流程编排运用实战源码
下一篇:技术人一定要懂点Docker
相关文章

 发表评论

暂时没有评论,来抢沙发吧~