gpt4 book ai didi

mongodb - 如何限制从同一服务器中的其他 dockerized 应用程序到 dockerized MongoDB 的连接并拒绝对 27017 的公共(public)访问

转载 作者:行者123 更新时间:2023-12-04 18:58:51 24 4
gpt4 key购买 nike

我正在使用 Orion Context Broker(在 docker 容器中),我需要它来连接 MongoDB(在它自己的 docker 容器中)。同时,我必须拒绝来自外部来源的所有传入流量到 27017,因为在运行 docker-compose 后,端口 27017 将“公开”给公众。
以上所有使用 Ubuntu 20.04。
这是我的docker-compose.yml文件

version: "3.5"
services:
orion:
image: fiware/orion-ld
hostname: orion
container_name: fiware-orion
expose:
- "1026"
ports:
- "1026:1026"
depends_on:
- mongo-db
command: -dbhost mongo-db -logLevel DEBUG

mongo-db:
image: mongo:3.6
hostname: mongo-db
container_name: db-mongo
ports:
- "27017:27017"
networks:
- default
command: --nojournal
volumes:
- mongo-db:/data

volumes:
mongo-db: ~
172.18.0.3是给 Orion 的 docker 容器的内部 IP。所以我尝试添加 --bind_ip 172.18.0.3command docker-compose 文件中的 mongo_db 参数,但这会破坏 docker-compose up出现此错误的过程: db-mongo | 2022-01-12T13:17:56.650+0000 E STORAGE [initandlisten] Failed to set up listener: SocketException: Cannot assign requested address这是我的 ubuntu 防火墙规则(我刚刚了解到 docker 绕过 [*])
OpenSSH                    ALLOW       Anywhere
1026 ALLOW Anywhere
27017 DENY Anywhere
27017 ALLOW 127.0.0.1
27017 ALLOW 172.18.0.3
OpenSSH (v6) ALLOW Anywhere (v6)
1026 (v6) ALLOW Anywhere (v6)
27017 (v6) DENY Anywhere (v6)
[*] https://www.techrepublic.com/article/how-to-fix-the-docker-and-ufw-security-flaw/
我也做了教程建议的修复,但是如果重新启动 docker(出于某种未知原因),我将停止访问 1026 端口,这应该是唯一的公共(public)端口。

最佳答案

作曲 ports:设置是使容器可以从 Docker 空间外部访问的原因。容器之间的连接不是必需的(或使用的)。删除它应该可以满足您的需求。

version: '3.8'
services:
orion:
image: fiware/orion-ld
ports:
- "1026:1026" # accessible from host port 1026
depends_on:
- mongo-db
command: -dbhost mongo-db -logLevel DEBUG
# same hostname ^^^^^^^^ and default MongoDB port 27017
# vvvvvvvv
mongo-db:
image: mongo:3.6
command: --nojournal
volumes:
- mongo-db:/data
# no ports:, not accessible from outside Docker

volumes:
mongo-db:
(我还从这个设置中删除了不必要的 container_name:hostname:networks:expose: 选项;它们没有任何区别,没有它们,Compose 堆栈应该可以正常工作。)

关于mongodb - 如何限制从同一服务器中的其他 dockerized 应用程序到 dockerized MongoDB 的连接并拒绝对 27017 的公共(public)访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70682384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com