Bootstrap

Docker自定义网络,让容器之间相互通信

目录

1、前置条件

1.1. 环境

1.2. 工具

2. 为什么需要自定义网络

2.1 安全性

2.2 隔离性

2.3 简化容器间通信

3. 执行命令

3.1. 设置自定义网络

3.2. 启动容器时绑定自定义网络

 3.3. 查看nginx2容器信息容器信息

3.4. 进入nginx1容器

3.5. 尝试与nginx2容器互通

4. 总结 


1、前置条件

1.1. 环境

CentOS7系统(我这里是在虚拟机上搭建的)

1.2. 工具

Docker容器(已安装)、xshell服务器终端连接工具。

Docker安装详见这里

2. 为什么需要自定义网络

2.1 安全性

所有容器连接到默认的 bridge 网络时,默认情况下可以相互通信。这虽然方便,但也带来了潜在的安全风险,因为任何容器都可以访问其他容器。

2.2 隔离性

通过创建独立的自定义网络,你可以将相关的容器组隔离开来,确保只有特定的容器能够互相通信。例如,你可以在一个网络中放置前端应用容器,在另一个网络中放置数据库容器,防止不必要的交互。

2.3 简化容器间通信

Docker 的自定义网络内置了 DNS 服务,容器可以直接通过其名称相互引用,而不需要知道对方的具体 IP 地址。这大大简化了配置和维护工作,尤其是在容器频繁重启或迁移的情况下。

3. 执行命令

3.1. 设置自定义网络

docker network create mynet

3.2. 启动容器时绑定自定义网络

docker run -d -p 99:90 --name nginx1 --network mynet nginx

docker run -d -p 77:80 --name nginx2 --network mynet nginx

 3.3. 查看nginx2容器信息容器信息

docker container inspect nginx2

可以看到nginx2容器的ip 

 

3.4. 进入nginx1容器

docker exec -it nginx1 bash

3.5. 尝试与nginx2容器互通

80是容器2本身得端口,而非宿主机的端口

curl http://172.19.0.3:80

可以看到访问了nginx1容器的默认页面,说明nginx1和nginx2容器之间可以互通

 

4. 总结 

其实,想象一下,如果你有很多朋友在同一个房间里聊天,可能会有点混乱。但是如果你把他们分成几个小组,每个小组在一个小房间里聊,就会清晰很多。自定义网络就是这么做的——它把相关的容器分组,确保它们只跟自己组内的成员交流。


 

;