网络类型原理
1.bridge网络
默认连接到docker0这个网桥上,所以先查看docker0
可以看到没有接口
接下来启动一个容器
[root@localhost ~]# docker run -itd --name xiang1 nginx:latest
进入容器
[root@localhost ~]# docker exec -it xiang1 /bin/bash
安装update iproute
root@78f6b825fe8e:/# apt-get install net-tools iproute2 -y
root@78f6b825fe8e:/# apt-get update
xiang1容器已有一个地址172.17.0.2,和主机的docker接口地址在同一网络中
在物理主机上,查看网桥docker0,可以看到已经多了一个接口
可以使用docker network inspect bridge命令来查看bridge网络情况
2.none网络模式
先启动一个容器,设为none网络
[root@localhost ~]# docker run -itd --network none --name xinag2 centos:centos7
进入容器,查看网络情况:
[root@localhost ~]# docker exec -it xinag2 /bin/bash
[root@localhost ~]# docker inspect xiang2
2.host网络模式
查看物理主机的httpd进程
[root@localhost ~]# pgrep httpd
启动一个容器
[root@localhost ~]# docker run -itd --privileged --name xiang3 --network host centos:centos7 init
进入容器,安装httpd服务,并启动
[root@localhost ~]# docker exec -it xiang3 /bin/bash
[root@localhost /]# yum install httpd -y
退出容器,再次查看httpd进程
[root@localhost /]# exit
exit
[root@localhost ~]# pgrep httpd
5496
5497
5498
5499
5500
5501
主机访问容器xiang3
注意防火墙
[root@localhost ~]# firewall-cmd --add-port=80/tcp
success
container模式
先运行一个容器:查看容器ip
[root@localhost ~]# docker run -itd --name xiang4 centos:centos7
689971eec4ba18f991661842da129da3b181a42839af2345cb5be3d40a33f4a4
[root@localhost ~]# docker exec -it xiang4 /bin/bash
[root@689971eec4ba /]# yum install -y iproute
[root@689971eec4ba /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
启动另一个容器,使用xiang4的网络
[root@localhost ~]# docker run -itd --name xiang5 --network container:xiang4 centos:centos7
49f845800b3a4bfd1450bffa7caebae0df92ff8f2097c7c4de216a97a0e35393
进入容器test04,查看网络情况,可以看到两个容器地址信息相同,是共享的
[root@localhost ~]# docker exec -it xiang5 /bin/bash
[root@689971eec4ba /]# yum install -y iproute
[root@689971eec4ba /]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever