[英]Docker Service in Swarm cannot connect to AWS RDS when a port is published
[英]Cannot access a Docker Swarm service through its published port on the host
我已經在多台機器上部署了一個 Docker Swarm 集群,現在我正在嘗試從主機訪問在 Docker 中運行的服務器。
我使用 docker compose 文件來定義我的服務,當我檢查服務時會出現暴露的端口:
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 27017,
"PublishedPort": 3017,
"PublishMode": "host"
}
]
},
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 27017,
"PublishedPort": 3017,
"PublishMode": "host"
}
],
"VirtualIPs": [
{
"NetworkID": "**********",
"Addr": "10.0.0.34/24"
}
]
}
我使用主機模式是因為該服務被限制在特定機器上運行,並且我希望它只能從這台機器上訪問。
但是當我列出偵聽主機端口的進程時,端口沒有出現。
當然,我無法通過暴露的端口從主機連接到服務器。
我使用 iptables 作為防火牆並盡可能限制開放的端口,但 Docker Swarm 需要的端口是開放的。
這是我的 docker-compose.yml 文件:
version: '3.4'
services:
mongo-router:
image: mongo
networks:
- mongo-cluster
volumes:
- db-data-router:/data/db
- db-config-router:/data/configdb
ports:
- target: 27017
published: 3017
protocol: tcp
mode: host
deploy:
placement:
constraints:
- node.labels.mongo.router == true
command: mongos --configdb cnf/mongodb-cnf_mongo-cnf-1:27017,mongodb-cnf_mongo-cnf-2:27017,mongodb-cnf_mongo-cnf-3:27017
volumes:
db-data-router:
db-config-router:
networks:
mongo-cluster:
external: true
該網絡是一個覆蓋網絡,所有服務都在其上訂閱。
我有一個類似的問題。 在Windows 上安裝 hyper-v 功能后(即使 cpu 不支持 hyper-v),我能夠從主機訪問已發布的端口(即使在入口模式下)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.