阻止容器访问互联网,但仍然有一个端口可以访问
Block container access to internet but still have a port open for access
我正在尝试的是创建一个隔离的容器,但要打开一个端口以供从外部访问。我想保留它,以便容器无法访问互联网。
我有 internal
网络和容器,它们打开了一个端口来访问服务。
示例docker-compose.yml
:
version: '3.8'
networks:
vaultwarden:
driver: default
internal: true
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- 8050:80
stdin_open: true
tty: true
volumes:
- /home/user/password_test:/data/
environment:
- WEBSOCKET_ENABLED=true
- ROCKET_WORKERS=8
networks:
- vaultwarden
它似乎工作正常,可以在 localhost:8050
中访问服务,但我无法从容器访问互联网。
我仍然想知道这样做是否正确?
编辑:我正在使用 podman-compose
,但在 docker-compose
中,我必须使用 bridge
而不是 default
。而且似乎 docker 这个解决方案根本不起作用
某种解决方案是创建一个 reverse-proxy 并将其附加到 internal
和 driver:bridge
网络。现在,到 vaultwarden 应用程序的流量通过其他网络,而 vaultwarden 本身无法访问互联网。
networks:
vaultwarden_net_internal:
internal: true
vaultwarden_net_outside:
driver: bridge
services:
vaultwarden:
image: vaultwarden/server:latest
restart: always
stdin_open: true
tty: true
volumes:
- /home/user/password_test:/data/
environment:
- WEBSOCKET_ENABLED=true
- ROCKET_WORKERS=8
networks:
- vaultwarden_net_internal
proxy:
build:
context: ./
dockerfile: Dockerfile
restart: always
stdin_open: true
tty: true
networks:
- vaultwarden_net_internal
- vaultwarden_net_outside
ports:
- 8051:80
depends_on:
- vaultwarden
我正在尝试的是创建一个隔离的容器,但要打开一个端口以供从外部访问。我想保留它,以便容器无法访问互联网。
我有 internal
网络和容器,它们打开了一个端口来访问服务。
示例docker-compose.yml
:
version: '3.8'
networks:
vaultwarden:
driver: default
internal: true
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- 8050:80
stdin_open: true
tty: true
volumes:
- /home/user/password_test:/data/
environment:
- WEBSOCKET_ENABLED=true
- ROCKET_WORKERS=8
networks:
- vaultwarden
它似乎工作正常,可以在 localhost:8050
中访问服务,但我无法从容器访问互联网。
我仍然想知道这样做是否正确?
编辑:我正在使用 podman-compose
,但在 docker-compose
中,我必须使用 bridge
而不是 default
。而且似乎 docker 这个解决方案根本不起作用
某种解决方案是创建一个 reverse-proxy 并将其附加到 internal
和 driver:bridge
网络。现在,到 vaultwarden 应用程序的流量通过其他网络,而 vaultwarden 本身无法访问互联网。
networks:
vaultwarden_net_internal:
internal: true
vaultwarden_net_outside:
driver: bridge
services:
vaultwarden:
image: vaultwarden/server:latest
restart: always
stdin_open: true
tty: true
volumes:
- /home/user/password_test:/data/
environment:
- WEBSOCKET_ENABLED=true
- ROCKET_WORKERS=8
networks:
- vaultwarden_net_internal
proxy:
build:
context: ./
dockerfile: Dockerfile
restart: always
stdin_open: true
tty: true
networks:
- vaultwarden_net_internal
- vaultwarden_net_outside
ports:
- 8051:80
depends_on:
- vaultwarden