- Docker 网络概况
Docker 四种网络模式:
bridge方式(默认)、none方式、host方式、container复用方式
root@node1 ~]# docker network ls #查询基本网络类型
NETWORK ID NAME DRIVER SCOPE
25845a5b0c40 bridge bridge local
e3957442f620 host host local
40f0ec9e9dbe none null local
docker network inspect host #查看网络host内部信息
docker network inspect bridge #查看网络bridge内部信息
1、bridge方式: –net=”bridge”
docker run -it --name nginx_bridge --net=bridge centos /bin/bash
#创建自定义网络网络类型bridge
docker network create --driver bridge *--subnet 172.25.0.0/16* new_bridge
#--ip标志为其分配IP地址
docker run --network=new_bridge --ip=172.25.3.3 -itd --name=container3 busybox
2、none方式: –net=”none”
网络模式为 none,即不为 Docker 容器构造任何网络环境。
docker run -it --name container_host --net=none centos /bin/bash
3、host方式: –net=”host”
Host 模式并没有为容器创建一个隔离的网络环境。 是因为该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,故 Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信
docker run -d --name hostc1 --network host -p 5001:5001 nginx
4、container复用方式: –net=”container:name or id”
Container 网络模式是 Docker 中一种较为特别的网络的模式。处于这个模式下的 Docker 容器会共享其他容器的网络环境,因此,至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离。
(1)启动一个容器:
docker run -d --name hostcs1 -p 5001:5001 training/webapp python app.py
(2)启动另一个容器,并使用第一个容器的 network namespace
docker run -d --name hostcs2 --network container:hostcs1 training/webapp python app.py
注意:因为此时两个容器要共享一个 network namespace,因此需要注意端口冲突情况,否则第二个容器将无法被启动。