Docker四种网络模式及配置示例

命令查看-->在宿主机上列出ip对应端口&容器ip对应端口:iptables -t nat -vnL

1、四种网络模式

bridge:此模式会为容器分配/设置ip,使用 --net=bridge 指定,默认设置。

host :容器不会自己虚拟自己的网卡,配置自己的ip,而是使用宿主机的ip和端口,使用 --net=host 指定。

none:该模式关闭了容器的网络功能,使用 --net=none指定。

container:该模式不会创建自己的网卡,配置自己的ip,而是和一个指定的容器共享ip、端口范围。使用 --net=container:names/id指定。

2、bridge网络模式

模式设置

#网络模式创建,也可以使用已有的:docker network ls
[root@docker-learn ~]# docker network create -d bridge new_bridge
0c94024570342a52e9d033d058477b2e6f1ca90fd4a2c44c283a69e3d9023899

[root@docker-learn ~]# docker run -it --rm --net=new_bridge busybox:latest sh
/ #
此时用的是docker0的ip

3、host网络模式

模式设置

[root@docker-learn ~]# docker run -it --net=host busybox sh
/ # hostname -i
hostname: docker-learn: Unknown host

4、container网络模式

容器1:

#创建容器设置容器名

[root@docker-learn ~]# docker run --name=test_busy -it --rm busybox:latest sh
#查看ip
/ # ip a
1: lo:  mtu 65536 qdisc noqueue 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
66: eth0@if67:  mtu 1500 qdisc noqueue
   link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
   inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0
      valid_lft forever preferred_lft forever

#编写页面,并将httpd的家目录指定到/tmp

/ # echo "this is a test_page" > /tmp/index.html
/ # httpd -h /tmp
#查看监听情况
/ # netstat -lunpt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 :::80                   :::*                    LISTEN      8/httpd
/ # 

容器2:

#创建容器设置容器名

[root@docker-learn ~]# docker run -it --name=test_busy2 --net=container:test_busy busybox:latest sh
/ # ip a
1: lo:  mtu 65536 qdisc noqueue 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
66: eth0@if67:  mtu 1500 qdisc noqueue
   link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
   inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0
      valid_lft forever preferred_lft forever
/ # wget -O - -q 172.17.0.5
this is a test_page

#进程和目录不会进行共享

/ # ps -ef
/ # ls /tmp
/ # 
#查看监听情况(此容器中是没有的)
/ # netstat -lnupt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

5、none网络模式

[root@docker-learn ~]# docker run -it --rm --net=none busybox:latest sh
/ # ip a
1: lo:  mtu 65536 qdisc noqueue 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
/ #


你可能感兴趣的:(#,docker,linux,容器)