docker 撰写网络的私有 "host"
Private "host" for docker compose network
给定一个 docker-compose 文件是这样的
version: "3.8"
services:
service-one:
ports:
- "8881:8080"
image: service-one:latest
service-one:
ports:
- "8882:8080"
image: service-two:latest
发生的情况是 service-one
在端口 8881 上暴露给主机网络,而 service-two
会在端口 8882 上暴露在主机网络上。
我希望能够安排的是,在为 docker-compose 创建的网络中,有一个 "private host",service-one
将在端口公开8881 和 service-two
将在端口 8882 上公开,这样 docker-compose 网络中的任何容器都能够连接到 "private host" 并连接到其配置的 [=27] 上的服务=] 但 不是 在实际的 docker 主机上。也就是说,要让通常从 CONTAINER_PORT 桥接到 HOST_PORT 的任何网络配置私下发生在 docker-compose 网络中,而不会有机会在实际端口上发生端口冲突主机网络。
我调整 以适应您的情况。这个想法是 运行 socat
在网关中,以便容器或图像发生变化(只是服务名称)。因此,从 service-X-backend
您可以连接到:
service-one
在端口 8881 上,并且
service-two
在端口 8882
使用 nginx 容器测试。
如果你想制作一些端口 public,你需要从网关本身发布它们。
version: "3.8"
services:
service-one-backend:
image: service-one:latest
networks:
- gw
service-two-backend:
image: service-two:latest
networks:
- gw
gateway:
image: debian
networks:
gw:
aliases:
- service-one
- service-two
depends_on:
- service-one-backend
- service-two-backend
command: sh -c "apt-get update
&& apt-get install -y socat
&& nohup bash -c \"socat TCP-LISTEN: 8881,fork TCP:service-one-backend:8080 2>&1 &\"
&& socat TCP-LISTEN: 8882,fork TCP:service-two-backend:8080"
networks:
gw:
给定一个 docker-compose 文件是这样的
version: "3.8"
services:
service-one:
ports:
- "8881:8080"
image: service-one:latest
service-one:
ports:
- "8882:8080"
image: service-two:latest
发生的情况是 service-one
在端口 8881 上暴露给主机网络,而 service-two
会在端口 8882 上暴露在主机网络上。
我希望能够安排的是,在为 docker-compose 创建的网络中,有一个 "private host",service-one
将在端口公开8881 和 service-two
将在端口 8882 上公开,这样 docker-compose 网络中的任何容器都能够连接到 "private host" 并连接到其配置的 [=27] 上的服务=] 但 不是 在实际的 docker 主机上。也就是说,要让通常从 CONTAINER_PORT 桥接到 HOST_PORT 的任何网络配置私下发生在 docker-compose 网络中,而不会有机会在实际端口上发生端口冲突主机网络。
我调整 socat
在网关中,以便容器或图像发生变化(只是服务名称)。因此,从 service-X-backend
您可以连接到:
service-one
在端口 8881 上,并且service-two
在端口 8882
使用 nginx 容器测试。
如果你想制作一些端口 public,你需要从网关本身发布它们。
version: "3.8"
services:
service-one-backend:
image: service-one:latest
networks:
- gw
service-two-backend:
image: service-two:latest
networks:
- gw
gateway:
image: debian
networks:
gw:
aliases:
- service-one
- service-two
depends_on:
- service-one-backend
- service-two-backend
command: sh -c "apt-get update
&& apt-get install -y socat
&& nohup bash -c \"socat TCP-LISTEN: 8881,fork TCP:service-one-backend:8080 2>&1 &\"
&& socat TCP-LISTEN: 8882,fork TCP:service-two-backend:8080"
networks:
gw: