对于一个小项目,我希望docker容器中的应用程序能够连接到该机器的localhost。这个问题的答案:From inside of a Docker container, how do I connect to the localhost of the machine?告诉我首选的方法是在docker run命令中使用--net="host"
。
我使用撰写文件来启动容器。 this question告诉我,net
选项已重命名为network_mode: "host"
。
这是撰写文件的开头
version: '3.6'
services:
shiny:
image: paulrougieux/eutradeflows
deploy:
restart_policy:
condition: on-failure
network_mode: "host"
ports:
- "3838:3838"
当我启动此文件时
sudo docker stack deploy -c stackshiny.yml shiny
我收到错误:
Ignoring unsupported options: network_mode
有关信息
$ sudo docker version
Client:
Version: 18.04.0-ce
Server:
Engine:
Version: 18.04.0-ce
如何从docker容器启用与主机上的数据库的连接?
答案 0 :(得分:4)
如docs for docker-compose file network_mode中所述:
注 在群集模式下使用(版本3)Compose文件部署堆栈时,将忽略此选项。 network_mode:“host”不能与链接混合。
使用network_mode
在docker swarm上部署时无法使用docker stack deploy
。这对于版本18.04来说并不新鲜,但是相当旧。
network_mode
只能在使用docker-compose up
在本地计算机上部署容器时与docker-compose一起使用。
答案 1 :(得分:0)
通过在端口部分指定模式,我能够绕过 docker stack deploy 的一些限制:
例如在您的 docker-compose.yml 文件中:
ports:
# Bypass the routing mesh by setting mode to host
- target: 8080
published: 80
protocol: tcp
mode: host
这里的“绕过路由网格”部分介绍了这一点: https://docs.docker.com/engine/swarm/ingress/
并在此处的“端口长语法”部分中作为 docker compose-spec 中的一个选项列出: https://github.com/compose-spec/compose-spec/blob/master/spec.md