14、 创建自定义网络
在我们通过docker run创建容器的时候默认就会去使用docker bridge的网络;其实在我们创建容器的时候是可以指定容器使用的网络的,并且我们也可以创建一个自定义的网络,在创建容器的时候指定使用我们自己创建的网络。
[root@docker ~]# docker network create -d bridge my-bridge 380c3f9ac371750664df0e61245a93ea3eb785aa59d90dc3223e8a6cba03a118 [root@docker ~]# brctl show # 没有该命令的需要通过`yum install bridge-utils -y`安装 NETWORK ID NAME DRIVER SCOPE 60e81719174c bridge bridge local 67f0fa7f22b0 host host local 380c3f9ac371 my-bridge bridge local 01f3c01c3ade none null local [root@docker ~]# docker network ls bridge name bridge id STP enabled interfaces br-380c3f9ac371 8000.02424dd4b4b7 no docker0 8000.02420c4725c2 no veth2e7a7c3 veth6c15790 [root@docker ~]#
1|014.1 新建容器并指定使用自定义的网络
docker run -d --name test3 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done"
查看网络信息:
[root@docker ~]# brctl show bridge name bridge id STP enabled interfaces br-380c3f9ac371 8000.02424dd4b4b7 no vethf1bb3b3 docker0 8000.02420c4725c2 no veth2e7a7c3 veth6c15790 [root@docker ~]# ip a|grep vethf1bb3b3 184: vethf1bb3b3@if183: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-380c3f9ac371 state UP [root@docker ~]# docker network inspect 380c3f9ac371 [ { "Name": "my-bridge", "Id": "380c3f9ac371750664df0e61245a93ea3eb785aa59d90dc3223e8a6cba03a118", "Created": "2018-06-06T12:58:16.075454193+07:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "1a7e1b2aed10c47e0e04b6c8bf11bef6bfcda8edd21644defff01302b977479d": { "Name": "test3", "EndpointID": "3ae8e776e83660fc1013e841cabbad819b523687b3ebf098e2dbbb00d4aeb266", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] [root@docker ~]#
2|014.2 修改已存在的容器到其他网络
[root@docker ~]# docker network connect my-bridge test2 [root@docker ~]# docker network inspect 380c3f9ac371 [ { "Name": "my-bridge", "Id": "380c3f9ac371750664df0e61245a93ea3eb785aa59d90dc3223e8a6cba03a118", "Created": "2018-06-06T12:58:16.075454193+07:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "1a7e1b2aed10c47e0e04b6c8bf11bef6bfcda8edd21644defff01302b977479d": { "Name": "test3", "EndpointID": "3ae8e776e83660fc1013e841cabbad819b523687b3ebf098e2dbbb00d4aeb266", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" }, "74d1dac13943effb5d5c3549b988d3b77049a99df88c3a7147d29623c1cb1099": { "Name": "test2", "EndpointID": "60400ff4299d8a469a6bb88229f0ccc919612483e20fe3474a8e7eab29e2f74e", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] [root@docker ~]#
修改完之后,查看原先默认使用的bridge网络信息:
[root@docker ~]# docker network inspect 60e81719174c [ { "Name": "bridge", "Id": "60e81719174cd81800981dba54d9dd97e0df639e128abb92605ca2828f4f3d06", "Created": "2018-05-31T16:47:33.917919725+07:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.17.0.0/16", "Gateway": "172.17.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "74d1dac13943effb5d5c3549b988d3b77049a99df88c3a7147d29623c1cb1099": { "Name": "test2", "EndpointID": "e5be5981ad5138aeb469e24ce8e79b1752f30e5ab51befdc68930ae01b63de42", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" }, "a10b6f5afb766f59550650656e29cf9fc1dff2c63978ceae02bdd92b367f329a": { "Name": "test1", "EndpointID": "8e4b12841f72614d2df2d6b5b53da197847655e09f7bfa84c1e2ed78dd329759", "MacAddress": "02:42:ac:11:00:03", "IPv4Address": "172.17.0.3/16", "IPv6Address": "" } }, "Options": { "com.docker.network.bridge.default_bridge": "true", "com.docker.network.bridge.enable_icc": "true", "com.docker.network.bridge.enable_ip_masquerade": "true", "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0", "com.docker.network.bridge.name": "docker0", "com.docker.network.driver.mtu": "1500" }, "Labels": {} } ] [root@docker ~]#
可以发现,test2既在bridge网络中也在my-bridge网络中。检查一下是否既可以通过IP访问也可以通过容器名访问:
[root@docker ~]# docker exec -it test3 /bin/sh / # ping 172.18.0.3 PING 172.18.0.3 (172.18.0.3): 56 data bytes 64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.126 ms 64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.093 ms ^C --- 172.18.0.3 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.093/0.109/0.126 ms / # ping test2 PING test2 (172.18.0.3): 56 data bytes 64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.071 ms 64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.126 ms ^C --- test2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.071/0.098/0.126 ms / # [root@docker ~]# docker exec -it test2 /bin/sh / # ping 172.18.0.2 PING 172.18.0.2 (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.075 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.094 ms ^C --- 172.18.0.2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.075/0.084/0.094 ms / # ping test3 PING test3 (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.072 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.104 ms ^C --- test3 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.072/0.088/0.104 ms / # ping test1 ping: bad address 'test1' / #
将test1也连接到my-bridge中:
[root@docker ~]# docker network connect my-bridge test1 [root@docker ~]# docker exec -it test2 /bin/sh / # ping test1 PING test1 (172.18.0.4): 56 data bytes 64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.097 ms 64 bytes from 172.18.0.4: seq=1 ttl=64 time=0.086 ms 64 bytes from 172.18.0.4: seq=2 ttl=64 time=0.083 ms ^C --- test1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.083/0.088/0.097 ms / # ping test3 PING test3 (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.072 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.085 ms 64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.095 ms ^C --- test3 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.072/0.084/0.095 ms / #
事实证明:两个容器之间使用的都是自定义的网络,那么他们之间就相当于添加了一个双向的link。即可以通过IP访问,也可以通过容器名访问。
__EOF__

本文作者:StaryJie
本文链接:https://www.cnblogs.com/jie-fang/p/10279752.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/jie-fang/p/10279752.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律