Docker快速入门(八)Docker网络管理3
Docker容器网络
Docker除了默认创建的三种网络外,还可以自定义网络。
首先创建一个bridge
类型的网络,使用docker network create
命令。
[root@promote ~]# docker network create --driver bridge new_net 8f0d50950bb7b86f01f5a62d6a322ede46fa893c515acf10d0e335fa28ccf234 [root@promote ~]# docker network ls NETWORK ID NAME DRIVER SCOPE b6a32ec430e9 bridge bridge local 9ab80c94885b host host local 8f0d50950bb7 new_net bridge local c42335728d98 none null local
查看一下当前的网络变化。
[root@promote ~]# brctl show bridge name bridge id STP enabled interfaces br-8f0d50950bb7 8000.024233fc2bd6 no docker0 8000.0242f338d5bb no
发现新增了一个网桥,这个网桥就是我们刚刚创建好的网络,可以发现网桥的名字就是刚刚创建的网络的短ID。
既然是我们自己创建的网络那么就可以自定义这个网络,接着重新创建一个网络并自定义这个网络的网段和网关。
[root@promote ~]# docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 new2_net 44b6f73a2cd3fd0d5d17124ddb87c5f3dfca1a8ca2c90af1570b1dd4eaa71d67 [root@promote ~]# docker network ls NETWORK ID NAME DRIVER SCOPE b6a32ec430e9 bridge bridge local 9ab80c94885b host host local 44b6f73a2cd3 new2_net bridge local 8f0d50950bb7 new_net bridge local c42335728d98 none null local
使用docker inspect
可以看到new2_net
网段的详细信息,可以注意到网段和网关都是我们自定义的。
[root@promote ~]# docker network inspect new2_net [ { "Name": "new2_net", "Id": "44b6f73a2cd3fd0d5d17124ddb87c5f3dfca1a8ca2c90af1570b1dd4eaa71d67", "Created": "2018-07-10T01:56:21.418800602-04:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.1.0/24", "Gateway": "192.168.1.1" } ] }, "Internal": false, "Attachable": false, "Containers": {}, "Options": {}, "Labels": {} } ]
再查看一下网桥
[root@promote ~]# brctl show bridge name bridge id STP enabled interfaces br-44b6f73a2cd3 8000.02421dea9d8a no br-8f0d50950bb7 8000.024233fc2bd6 no docker0 8000.0242f338d5bb no [root@promote ~]# ifconfig br-44b6f73a2cd3 br-44b6f73a2cd3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.1.1 netmask 255.255.255.0 broadcast 0.0.0.0 ether 02:42:1d:ea:9d:8a txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以发现网桥上的IP就是刚刚创建的网络的网关。
接下来就是使用自己创建的网络,使用--network
选项即可。
[root@promote ~]# docker run -it --name busybox --network new2_net docker.io/busybox / # ifconfig eth0 Link encap:Ethernet HWaddr 02:42:C0:A8:01:02 inet addr:192.168.1.2 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::42:c0ff:fea8:102/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1156 (1.1 KiB) TX bytes:578 (578.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
可以看到这个容器的IP地址就是我刚刚创建的网络分配的。当然,这个IP地址还可以自己设置静态IP,当然不能设置为new2_net
网络网段之外的IP,否则会报错。
使用--ip
选项就可以了。
[root@promote ~]# docker run -it --name busybox --network new2_net --ip 192.168.1.5 docker.io/busybox / # ifconfig eth0 Link encap:Ethernet HWaddr 02:42:C0:A8:01:05 inet addr:192.168.1.5 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::42:c0ff:fea8:105/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:578 (578.0 B) TX bytes:578 (578.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
可以看到Ip为自己设置的静态IP。
分类:
Docker快速入门
标签:
Docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App