Docker 撰写 - 限制互联网访问,仅允许通过代理出口
Docker compose - restrict internet access, allow egress only through proxy
我正在尝试使用 Docker compose 在本地开发环境中复制受限的生产环境。
应用程序容器不应该能够从内部访问互联网。其中一个容器应能够将其 Web 端口暴露给主机。主机应能够访问该 Web 服务。
应用程序容器应能够到达代理服务器,例如3128端口。代理容器应该能够访问互联网。
是否可以使用 Docker compose 进行设置?
其实这是可以的。 Ingress (NginX) 和 egress (Squid) 容器需要在内部和外部网络中,而应用程序容器只在内部网络中。
# Base docker-compose, which is extended by more specific docker-compose files
version: "3.5"
services:
appname-nginx:
image: companyimage/nginx
container_name: appname-nginx
depends_on:
- appname-web
ports:
- "127.0.0.1:443:443"
- "127.0.0.1:80:80"
networks:
appname-network:
aliases:
- local.appname.com
appname-external-network:
appname-web:
image: companyimage/web
container_name: appname-web
networks:
- appname-network
appname-outbound-proxy-squid:
image: companyimage/squid
container_name: appname-outbound-proxy-squid
networks:
- appname-external-network
- appname-network
networks:
appname-network:
name: appname-network
internal: true
appname-external-network:
name: appname-external-network
我正在尝试使用 Docker compose 在本地开发环境中复制受限的生产环境。
应用程序容器不应该能够从内部访问互联网。其中一个容器应能够将其 Web 端口暴露给主机。主机应能够访问该 Web 服务。
应用程序容器应能够到达代理服务器,例如3128端口。代理容器应该能够访问互联网。
是否可以使用 Docker compose 进行设置?
其实这是可以的。 Ingress (NginX) 和 egress (Squid) 容器需要在内部和外部网络中,而应用程序容器只在内部网络中。
# Base docker-compose, which is extended by more specific docker-compose files
version: "3.5"
services:
appname-nginx:
image: companyimage/nginx
container_name: appname-nginx
depends_on:
- appname-web
ports:
- "127.0.0.1:443:443"
- "127.0.0.1:80:80"
networks:
appname-network:
aliases:
- local.appname.com
appname-external-network:
appname-web:
image: companyimage/web
container_name: appname-web
networks:
- appname-network
appname-outbound-proxy-squid:
image: companyimage/squid
container_name: appname-outbound-proxy-squid
networks:
- appname-external-network
- appname-network
networks:
appname-network:
name: appname-network
internal: true
appname-external-network:
name: appname-external-network