目录

1. bridge模式容器间的访问

 2.创建bridge网络

3.为网络指定ip地址


前言:docker会默认有三种网络:bridge none host

docker启动时会根据docker0分配默认的ip地址,而分配的这个网络不是真实的地址,不能通过宿主机进行访问。

可以通过docker network ls 进行查看docker的网络信息。

1. bridge模式容器间的访问

预准备:安装网桥工具

yum install -y bridge-utils

①首先启动一个nginx容器,命名为nginx1

docker run -itd --name nginx1 nginx:1.19.3-alpine 

②查看docker运行的容器  docker ps

③查看docker中网络信息, docker network ls

④查看docker bridge 网络详细信息

docker network inspect bridge

 得到信息中可以看到,bridge网络中有名称为 nginx1 的容器,分配的ip地址为 172.17.0.2

⑤通过ip addr 可以查看ip的信息

 docker0 对应的网段就是172.17.0.1

⑥此时再创建一个容器 nginx2

docker run -itd --name nginx2 nginx:1.19.3-alpine 

 ⑦通过docker network inspect bridge 可以看到bridge网络下存在两个nginx容器,对应的ip地址分别是172.17.0.2  172.17.0.3

 进入到nginx1中

ping 172.17.0.3(nginx2对应的容器ip地址)   可以ping通,但是ping  nginx2 则ping不通。

此时nginx1和nginx2之间是通过docker0进行关联的,docker0是分配了默认的ip地址,只能根据ip相互访问,但是不能直接通过名称访问

此时可以通过新建一个网络,将nginx1和nginx2都绑定新网络

 2.创建bridge网络

 ①创建一个bridge网络

docker network create -d bridge g-bridge

②查看网络信息

现在多了一个g-bridge网络, 

③将nginx1容器绑定 g-bridge 网络

docker network connect g-bridge nginx1

 此时查看 g-bridge 网络下不存在任何容器,默认网关为:172.18.0.1 区分docker的172.17.0.1

docker network inspect g-bridge 

④查看 g-bridge 网络的信息,可以看到g-bridge网络下存在一个nginx1的容器

docker network inspect g-bridge 

 ⑤同理,将nginx2容器也与 g-bridge 网络进行绑定

进入nginx1容器中,ping nginx2

此时发现容器可以ping的通

 g-bridge 网络信息,存在nginx1 和nginx2 容器

3.为网络指定ip地址

 ①将现有的容器全部删除

并将新建的g-bridge网络删除

②新建指定ip的网络

docker network create -d bridge --subnet=172.172.0.1/24 --gateway 172.172.0.1 g-bridge

③查看网络

 ④创建容器时,指定网络为 g-bridge ,ip地址为 172.172.0.122

docker run -itd --name nginx1 --net g-bridge --ip 172.172.0.122 nginx:1.19.3-alpine

此时容器的ip信息

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐