gpt4 book ai didi

docker - 如何将 docker-compose 连接到容器网络和本地主机网络

转载 作者:行者123 更新时间:2023-12-02 19:04:05 27 4
gpt4 key购买 nike

如何设置 docker-compose 文件以连接到内部容器网络和外部 localhost 网络?

我尝试在 docker-compose 中使用 extra_hosts 属性,但无法获得我需要的结果

我的 docker-compose 包含以下内容:

version: '3.7'

services:

myapp1:
container_name:
myapp1
hostname:
myapp1
build:
context:
.
dockerfile:
Dockerfile
command:
["npm", "start"]
networks:
- container_network # This is an internal container network

myapp2:
... # Same idea as above
networks:
- container_network # This is an internal container network

networks:

container_network:
name:
container_network
driver:
bridge

我还有一个独立的服务,我使用以下命令运行它:
docker run --name standalone_service --network host

还有其他与我的问题无关的原因,为什么 standalone_service 不能合并到 docker-compose 文件中。因此,将其合并到 docker-compose 文件并使用 container_network 不是此服务的选项。

我希望 myapp1(它是内部 container_network 的一部分)能够访问主机网络上的 standalone_service。我该怎么做呢?

最佳答案

鉴于您已经运行了 standalone_service--network host ,它与主机上运行的任何其他进程没有区别,以及对From inside a Docker container, how do I connect to [the host] machine 的各种回答。应该为你工作。

第二种更好的方法是在 Docker Compose 之外创建一个 Docker 网络,并将另一个容器附加到该网络

docker network create container_network
docker run --net container_network -p 8888:8888 --name standalone_service ...

完成此操作后,您可以在 docker-compose.yml 中声明相同的网络。如 an external network .你甚至可以 make this be the default network这样您就不必手动配置其他服务来使用它。
version: 3
services:
myapp1:
build: .
ports: ['3000:3000']
environment:
MYAPP2_URL: 'http://myapp2/'
STANDALONE_URL: 'http://standalone_service/'
# gets `command:` from the Dockerfile
# attaches to the `default` network
networks:
default:
external: true
name: container_network

您还可以“借用”默认值 default Docker Compose 创建的网络,如果您不介意以相反的顺序开始并取决于实现细节。
docker-compose up -d
docker run --net dirname_default -p 8888:8888 --name standalone_service ...

没有“连接到外部本地主机网络”这样的东西。每个网络环境(主机,以及单独的每个容器)都有自己的“本地主机网络”127.0.0.0/8; localhost固定为 IP 地址 127.0.0.1,这始终表示“我”;在 Docker 上下文中,“特别是我正在调用的容器”。

关于docker - 如何将 docker-compose 连接到容器网络和本地主机网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977611/

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