docker - 从另一个容器访问 VPN 容器上的客户端
问题描述
再会,
抱歉,如果这是重复的,我有与这篇文章相同的请求,但它没有答案,这就是我再次询问的原因。
我在服务器上运行了多个容器,但假设只有以下 3 个:
- 容器 A 运行 Web 服务
- 容器 B 运行数据库
- 容器 C 运行 OpenVPN,可以访问 2 个客户端 C1(192.168.100.1)和 C2(192.168.100.2)
我希望只有容器 A 可以访问容器 C 上的 VPN 网络(能够 ping C1 和 C2),并且不允许容器 B(其他任何容器)访问 C1 和 C2。
目前,VPN 容器连接到 HOST 网络,但这允许所有容器访问 VPN
这是我尝试过的:
容器 A 和 C
version: '2'
services:
odoo:
container_name: container_a
ports:
- "8990:8069"
- "8992:8072"
tty: true
external_links:
- db12
networks:
- default
- vpn_network
vpn:
image: dperson/openvpn-client
container_name: container_c
cap_add:
- net_admin
networks:
- vpn_network
read_only: true
tmpfs:
- /run
- /tmp
restart: unless-stopped
security_opt:
- label:disable
stdin_open: true
tty: true
volumes:
- /dev/net:/dev/net:z
- ./vpn:/vpn ## This is where the VPN config is
## THIS GIVES ACCESS FOR ALL CONTAINERS AND I DO NOT WANT THAT
# network_mode: "host"
networks:
default:
external:
name: postgres_default12
vpn_network:
external:
name: vpn_network
集装箱 B
version: '2'
services:
db_primary:
build: .
image: sudotechodoo/odoo:postgres12
container_name: db12
ports:
- "5432:5432"
restart: always
volumes:
- data_postgres_main:/var/lib/postgresql/data
volumes:
data_postgres_main:
external:
name: postgres_data12
networks:
default:
external:
name: postgres_default12
如何更改它,以便我可以在容器 A 内 ping C1 或 C2,但不能从容器 C?
先感谢您
解决方案
推荐阅读
- angular - 仅在输入新数据时启用更新按钮,并在此之前禁用 Angular
- c++ - 无法在 C++ 中通过 auto 迭代映射
- python-3.x - 无法使用 OrderedDict 订购字典并已排序
- multithreading - 为什么这段代码不能作为死锁工作?
- loops - 可靠的;使用循环循环变量
- python-3.x - Python (3.7) asyncio,带有 while 循环和自定义信号处理程序的工作任务
- django - Django 在 Date 上建模 DateTimeField 索引
- node.js - 如何在 mongo db 聚合中合并结果?
- mongodb - mongo-go-driver:嵌套的 OR/AND 查询过滤器
- position - Konvajs:如何更改文本组的位置