四種網絡類型:
None:不為容器配置任何網絡功能,--net=none
Container:與另一個運行中的容器共享Network Namespace,--net=container:containerID(K8S)
Host:與宿主機共享Network Namespace,--net=host
Bridge:Docker設計的NAT網絡模型
下面分別講解下:
none:
[root@docker1 centos_zabbix]# docker run -it --network none centos6.9_ssh:v2 /bin/bash [root@6ae597015723 /]# ip addr 1: lo:mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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
這種沒有ip,可以在容器裡隨便玩,沒有多大意義
container類型的網絡:
[root@1c21de6080bb html]# [root@docker1 centos_zabbix]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c21de6080bb centos6.9_nginx_ssh:v3 "/bin/bash" 26 seconds ago Up 25 seconds vigorous_payne [root@docker1 centos_zabbix]# docker run -it --network container:1c21de6080bb centos6.9_nginx_ssh:v4 /bin/bash 共用了主機名的ip地址 可以查看屬性 [root@docker1 centos_zabbix]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 41c457f6b89d centos6.9_nginx_ssh:v4 "/bin/bash" 5 minutes ago Up 5 minutes loving_curie 1c21de6080bb centos6.9_nginx_ssh:v3 "/bin/bash" 6 minutes ago Up 6 minutes vigorous_payne [root@docker1 centos_zabbix]# docker inspect 41c457f6b89d|grep -i network "NetworkMode": "container:1c21de6080bb8c83e800fa8b5fb15782a18bb61ab292050ca1172fbb866b1afc", "NetworkSettings": { "Networks": {}
要注意的是這種公用container類型的端口是誰先用某個端口,誰就佔了,後來的沒法使用這個端口
host類型
[root@docker1 centos_zabbix]# docker run -it --network=host centos6.9_nginx_ssh:v2 /bin/bash
這種就是和宿主機共用端口,誰先佔誰用,但是性能最高,所以我們在構建鏡像的時候使用了這個參數,就是為了統一網絡類型,提高構建鏡像的效率
[kyec555 ] Docker四種網絡類型原理實例解析已經有366次圍觀