Docker 容器的五种网络模式

 

  • 五种模式

 

bridge
-net=bridge
默认网络 docker启动后创建一个docker0网桥 默认创建的容器添加到这个网桥中。

 

host
-net=host
容器不会获得一个独立的network namespace 而是与宿主机共用一个 所以容器不会有自己的网卡信息 而是使用宿主机的 容器除了网络 其他都是隔离的

 

none
-net=none
获得独立的network namespace 但不为容器进行任何网络配置 需要我们手动配置

 

container
-net=container:name/ID
与指定的容器使用同一个network namespace 具有同样的网络配置信息 两个容器除了网络 其他的都还是隔离的

 

自定义网路
与默认的bridge 原理一样 但自定义网络 具备内部DNS发现 可以通过容器名或者主机名容器之间网络通信

 

  • 测试

 

#查看网络
docker network ls

#测试host
#内部使用的网络端口是宿主机的端口 网络不会隔离
docker pull busybox
docker run -it  --net=host busybox
ifconfig

#测试none
docker run -it  --net=none busybox
ifconfig
#使用ip ns配置网络
ip ns

#测试container
#nginx1 加入到bs网络  请求bs的99端口请求道nginx1容器
docker run -itd --name bs -p 99:80  busybox
docker run --d --name  nginx1 --net=container:bs  nginx
#测试
http://192.168.10.243:99
[root@cetus www]# docker exec -it bs sh
/ # netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -

#测试自定义网络
# bs1 bs2 创建后 互相之间通过主机名或者容器名 ping是不通的
docker  run -it --name=bs1 busybox
docker  run -it --name=bs2 busybox
ping bs1
ping bs2
#创建自定义网络
docker network create bs_test
docker  run -it --name=bs3 --net bs_test busybox
docker  run -it --name=bs4 --net bs_test busybox
ping bs3
ping bs4

 

你可能感兴趣的:(kubernetes)