3.1 bridge网络
基础
Bridge网络
是Docker中的默认网络驱动,用于创建一个隔离的网络,容器可以在其中相互通信。这个网络允许容器通过IP地址和主机名进行交流,为多容器应用程序的不同组件之间提供了一种方便的交互方式。
Bridge网络
在主机层面创建了一个私有的内部网络,该网络与主机的外部网络隔离。连接到此网络的容器可以彼此通信,但如果没有配置端口转发,则无法直接从外部访问这些容器。
自动创建bridge网络
默认情况下,Docker在安装时会自动创建bridge网络
,而未指定特定网络的容器会自动连接到该网络。
在bridge网络
中创建和使用容器的示例
1. 在bridge网络
中运行容器:
在这个示例中,我们运行两个容器:运行Nginx的container1和运行Busybox的container2。两个容器都连接到了默认的bridge网络。
docker run -d --name container1 nginx
docker run -d --name container2 busybox sleep 1000
2. 检查容器的IP地址:
使用docker inspect命令检查容器的IP地址。
这些命令会返回容器的IP地址,可以用来实现容器间的通信。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2
3. 通过IP地址实现容器之间的通信:
使用ping命令
从container2
中ping container1
,以检查容器之间的连接。
如果容器正确地连接到了bridge网络
,ping命令
会成功。
docker exec container2 ping -c 4 <IP_ADDRESS_OF_CONTAINER1>
说明: Bridge网络
为局部应用程序提供了一种简单的解决方案,在这种场景中,容器需要彼此通信,同时与外部网络保持隔离。通过IP地址ping是检查网络连接的基础方式,不过对于更复杂的应用,可能需要配置DNS或额外的网络驱动。
3.2 使用主机名
使用主机名连接容器
除了使用IP地址外,Docker还支持使用容器的名称来连接容器之间的通信。这简化了配置,因为容器的名称是固定的,而IP地址在容器重新启动时可能会更改。
通过主机名连接的示例
1. 使用bridge
网络模式启动容器:
docker run -d --name webserver --network bridge nginx
docker run -d --name appserver --network bridge busybox sleep 1000
2. 验证通过主机名的连接:
使用ping命令
从appserver
容器中pingwebserver
:
docker exec appserver ping -c 4 webserver
创建自定义的bridge网络
与其使用默认的bridge网络
,你也可以创建一个自定义的bridge网络
,以更好地控制容器间的交互。
创建自定义网络的示例
1. 创建自定义网络:
docker network create --driver bridge my_bridge_network
2. 在自定义网络中启动容器:
docker run -d --name webserver --network my_bridge_network nginx
docker run -d --name appserver --network my_bridge_network busybox sleep 1000
3. 验证通过主机名的连接:
docker exec appserver ping -c 4 webserver
3.3 多主机示例
实际使用示例
示例 1: Web服务器和数据库
创建文件 docker-compose.yml
用于Web服务器和数据库:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_bridge_network
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- my_bridge_network
networks:
my_bridge_network:
driver: bridge
启动 Docker Compose:
docker compose up -d
检查容器之间的连接:
docker compose exec web ping -c 4 db
示例 2: 微服务架构
创建文件 docker-compose.yml
用于微服务应用程序:
version: '3.8'
services:
frontend:
image: nginx:latest
networks:
- my_bridge_network
backend:
image: mybackend:latest
networks:
- my_bridge_network
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- my_bridge_network
networks:
my_bridge_network:
driver: bridge
启动 Docker Compose
:
docker compose up -d
检查容器之间的连接:
docker compose exec backend ping -c 4 db
docker compose exec frontend ping -c 4 backend
GO TO FULL VERSION