我正在使用 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。因此,我嘗試在 docker-compose 檔案中添加--bind_ip 172.18.0.3mongo_dbcommand引數,但這會因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 埠。
uj5u.com熱心網友回復:
Composeports:設定使容器可以從 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 堆疊應該可以正常作業。)
uj5u.com熱心網友回復:
把它放在自己的網路上(即新的docker網路:orion_net),只公開你需要的埠。當前,您處于共享的“默認”網路上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410193.html
標籤:
