网络模式:
bridge
–net=bridge默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加这个网桥中。
host
–net=host容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的.容器除了网络,其他都是膈离的。
none
–net=none获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。
container
–net=container:Name/ID与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。
自定义网络
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。
eg: container mode
[root@docker ~]# docker run -itd -p 90:80 --name bs busybox
[root@docker ~]# docker run -d --net container:bs --name nginx01 nginx
[root@docker ~]# docker container inspect bs
[root@docker ~]# curl 172.17.0.2
Welcome to nginx!
eg: 自定义网络
[root@docker ~]# docker network create test
[root@docker ~]# docker run -itd --name bs5 --net test busybox
[root@docker ~]# docker run -itd --name bs6 --net test busybox
[root@docker ~]# docker exec -it bs5 sh
/ #
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:12:00:02
inet addr:172.18.0.2 Bcast:172.18.255.255 Mask:255.255.0.0
[root@docker ~]# docker exec -it bs6 sh
/ #
/ #
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:12:00:03
inet addr:172.18.0.3 Bcast:172.18.255.255 Mask:255.255.0.0
/ # 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.296 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.178 ms
/ # hostname
f15981bb47ff
/ # ping f15981bb47ff
PING f15981bb47ff (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.078 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.471 ms
/ # ping bs6
PING bs6 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.146 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.215 ms