Docker-自定义网络

创建容器默认使用docker0网络,我们创建一个自定义网络

docker0的特点是容器之间只能通过ip访问,不能通过容器名访问,除非使用--link。自定义网络可以通过容器名访问

网络模式:

  • bridge:使用桥接方式连接网络(默认)
  • none:不配置网络
  • host:和主机共享网络
  • container:容器内联通(用得少,局限大)

  

当我们启动容器时,如果不指定网络,默认使用bridge,也就是docker0

docker run -id busybox  
相当于: docker run
-id --net bridge busybox

查看docker网络相关命令:

docker network --help

列出所有网络;

docker network ls

创建网络:

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet    # 创建名为mynet的网络,使用桥接模式,子网掩码是192.168.0.0/16,网关是192.168.0.1

移除网络:

docker network rm 网络名

查看网络详细信息:

docker network inspect mynet

 创建使用mynet的容器busy1-mynet、busy2-mynet

docker run -id --name busy1-mynet --net mynet --rm busybox
docker run -id --name busy2-mynet --net mynet --rm busybox

创建使用默认网络docker0的容器busy1、busy2

docker run -id --name busy1 --rm busybox
docker run -id --name busy2 --rm busybox

busy1-mynet和busy2-mynet之间可以通过容器名互相ping通:

docker exec -it busy1-mynet ping busy2-mynet

网络连通:连接一个容器到一个网络

但是busy1-mynet和busy1不能通过ip、容器名ping通,因为他们的网段不同。此时需要用connect命令,连接一个容器到一个网络

docker network connect mynet busy1        #将容器busy1连接到网络mynet上。busy1容器此时会有两个IP

#此时mynet网络中的容器就可以连接busy1容器了

  docker exec -it busy1-mynet1 ping busy1

原文地址:https://www.cnblogs.com/fanfan-90/p/12163307.html