Docker-Compose使用自定义bridge网桥后在OpenWrt系统中容器无法访问网络解决方案
示例compose描述文件如下,注意最后网络配置:
# docker-compose --env-file .env.yoko.prod.local up -d
services:
...
postgres:
image: kuluseky/postgres-zhparser-postgis:${DATABASE_VERSION:-13}
container_name: ${APP_PREFIX:-app_}postgres_${DATABASE_VERSION:-13}
restart: unless-stopped
# 加载环境变量到容器。
env_file:
- ./.env.yoko.prod.local
environment:
POSTGRES_PASSWORD: ${DATABASE_PWD:-123456}
PGDATA: /var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
- ./pgdata:/var/lib/postgresql/data
networks:
- ${APP_PREFIX:-app_}network
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "30"
#注意修改网络名称前缀。
networks:
app_network:
name: app_network
# openwrt 需要指定桥接网卡,要不容器内无法访问外部网络
driver: bridge
driver_opts:
com.docker.network.bridge.name: docker1
# 可以自己指定网段
# ipam:
# driver: default
# config:
# - subnet: 192.168.200.0/24
# gateway: 192.168.200.1
核心配置是这个:
...
driver: bridge
driver_opts:
com.docker.network.bridge.name: docker1
在配置完docker1
网络后,可以在dockerman中看到父接口:
接着去设置防火墙,如图:
重启防火墙,这时进compose启动的容器内部就可以正常访问网络了~