从docker堆栈模式访问本地网络主机
我需要ftp连接到从docker堆栈模式访问本地网络主机,docker,docker-compose,stack,Docker,Docker Compose,Stack,我需要ftp连接到192.168…网络主机(本地网络),并连接到mongo容器 swarm模式下的Docker阻止网络模式:主机(我看不到容器内的远程ftp主机) Docker stack有关于--发布模式=主机、目标=80、发布=8080的文档,但我不知道如何在Docker compose文件中编写它 我的docker compose.yml文件 version: '3' services: node: image: tgbot-test_node_1 build:
192.168…
网络主机(本地网络),并连接到mongo容器
swarm模式下的Docker阻止网络模式:主机(我看不到容器内的远程ftp主机)
Docker stack有关于--发布模式=主机、目标=80、发布=8080
的文档,但我不知道如何在Docker compose文件中编写它
我的docker compose.yml
文件
version: '3'
services:
node:
image: tgbot-test_node_1
build:
context: ..
env_file: .env.test
network_mode: host
links:
- mongo # works
depends_on:
- mongo
deploy:
mongo:
image: mongo
network_mode: "bridge"
restart: on-failure
ports:
- 8080:80 # not works, only expose 27017/tcp
# not works
# - mode: host
# target: 27019
# published: 27017
env_file:
- .env.test
volumes:
- db:/data/db
deploy:
limits:
cpus: '0.75'
volumes:
db:
我需要群集模式来限制资源
如何访问ftp主机?
- Docker版本19.03.12,内部版本48a66213fe
- docker compose版本1.26.2,构建eefe0d31
端口:27017/tcp
。它不转发带有堆栈部署的端口,任何-是“80:80”还是“27017”
我设定
得到
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab58c781fdb9 mongo:latest "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 27017/tcp tgbot-test_mongo.1.3i7yps3saqo3nk4xxyk0eka7h
43c0e3cfe960 tgbot-test_node_1:latest "docker-entrypoint.s…" 3 seconds ago Up 3 seconds tgbot-test_node.1.v23cufsrr683gdg2bicgf80q2
我认为这只是一个配置问题。您提到了“FTP主机”,但没有提到运行FTP服务器。希望下面的内容对您的mongo数据库有所帮助
mongodb
默认情况下将始终在容器内的端口27017
上运行,除非进行了配置,因此您必须将容器的27017
端口装载到主机,而不是端口80
版本:“3”
服务:
节点:
图:tgbot-test_节点_1
环境文件:.env.test#配置为mongodb://mongo:27017/
网络:
-tgbot试验
蒙戈:
图片:mongo
端口:
-27017:27017#仅当您希望在堆栈外部访问它时才需要
#否则,它在堆栈网络中始终作为“mongo”可见
卷数:
-/home/$USER/db:/data/db#可以挂载到主机上
网络:
-tgbot试验
网络:
tgbot测试:
驱动程序:覆盖#建议覆盖网络
#卷数:
#db:#这本身不是持久性的-可以装载到主机
您还可以创建一个外部卷。
docker卷创建--名称tgbot db
。。。
卷数:
tgbot数据库:
外部:正确
您应该能够通过从主机或远程连接到mongodb实例mongodb://192.160.X.X:27017/
或使用docker swarm
的DNS名称mongo
(服务名称)和mongodb://mongo:27017/
谢谢。是我的错。192.168... 已从节点容器ping。我可以处理覆盖网络。但是为什么docker ps
不显示转发器端口?通过portainer,我在mongo服务上看到了“27018:27017”,但是docker ps
没有显示这一点。我认为docker ps
端口是docker文件的一个工件,暴露了端口,即使在您的情况下27017
不应该在堆栈网络之外访问<代码>docker service ls
或docker stack services
应显示portainer显示的服务端口绑定27018:27017
。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab58c781fdb9 mongo:latest "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 27017/tcp tgbot-test_mongo.1.3i7yps3saqo3nk4xxyk0eka7h
43c0e3cfe960 tgbot-test_node_1:latest "docker-entrypoint.s…" 3 seconds ago Up 3 seconds tgbot-test_node.1.v23cufsrr683gdg2bicgf80q2