目录
1、前置条件
1.1. 环境
CentOS7系统(我这里是在虚拟机上搭建的)
1.2. 工具
Docker容器(已安装)、xshell服务器终端连接工具。
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. 总结
其实,想象一下,如果你有很多朋友在同一个房间里聊天,可能会有点混乱。但是如果你把他们分成几个小组,每个小组在一个小房间里聊,就会清晰很多。自定义网络就是这么做的——它把相关的容器分组,确保它们只跟自己组内的成员交流。