Docker Compose 中指定网络的配置方法
学习笔记作者:admin日期:2025-06-29点击:7
摘要:本文介绍了如何在 Docker Compose 配置中为服务指定自定义网络,包括定义桥接网络、分配服务到网络以及可选的子网配置。通过这种方式,可以实现容器之间的安全通信和网络隔离。
1. 问题描述
用户希望在 Docker Compose 配置中指定网络,以便更好地管理容器间的通信和网络隔离。
2. 解决方案
在 Docker Compose 中,可以通过 networks
字段为服务分配自定义网络。以下是一个完整的示例,展示了如何定义一个名为 bitmagnet_network
的桥接网络,并将 bitmagnet
和 postgres
容器加入该网络。
version: '3.8'
services:
bitmagnet:
image: ghcr.io/bitmagnet-io/bitmagnet:latest
container_name: bitmagnet
ports:
- "3333:3333"
- "3334:3334/tcp"
- "3334:3334/udp"
restart: unless-stopped
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD=pNost9gK6gres
- TMDB_API_KEY=398f82347b713c19d22d43a913bb4fbd
volumes:
- /root/dockerdata/bitmagnet:/root/.config/bitmagnet
command:
- worker
- run
- --keys=http_server
- --keys=queue_server
- --keys=dht_crawler
depends_on:
postgres:
condition: service_healthy
networks:
- bitmagnet_network
postgres:
image: postgres:16-alpine
container_name: bitmagnet-postgres
volumes:
- /root/dockerdata/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=pNost9gK6gres
- POSTGRES_DB=bitmagnet
- PGUSER=postgres
shm_size: 5g
healthcheck:
test:
- CMD-SHELL
- pg_isready
start_period: 20s
interval: 10s
networks:
- bitmagnet_network
networks:
bitmagnet_network:
driver: bridge
3. 关键说明
networks:
块用于定义一个名为bitmagnet_network
的桥接网络。networks:
在每个服务下指定使用的网络名称,以确保容器加入该网络。- 这样配置后:
bitmagnet
可以通过主机名postgres
访问 PostgreSQL 容器(因为它们在同一个自定义网络中)。- 网络通信更加安全和高效。
- 如果需要,还可以配置子网、固定 IP 等高级功能。
4. 自定义子网(可选)
如果你希望为网络设置特定的子网和网关,可以这样写:
networks:
bitmagnet_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
gateway: 172.20.0.1
注意:使用自定义子网时,请确保没有与其他网络冲突。
5. 总结
要指定网络,只需:
- 在顶层添加
networks:
块定义网络; - 在服务下用
networks:
指定使用的网络名称。
如果你还有其他需求,比如多个网络、固定 IP、外部网络接入等,也可以继续扩展这个配置。