我很难理解如何使用 docker-compose 创建以下设置。
基本上我有三个容器(带有单独的 docker-compose.yaml 文件,每个容器单独启动)。我还有一个用 单独创建的桥接网络docker network create my-network
。
这些docker-compose.yaml
文件看起来如下:
version: "3"
services:
service-name:
image: image-name
container_name: container-name
networks:
- my-network
networks:
my-network:
external: true
现在,我还想公开单个容器或 my-network 中的一些端口,以便localhost
主机系统可以看到它们,即我希望能够127.0.0.1:port_no
在主机系统下访问它们。这对于连接到主机上运行的服务是必需的,也是因为我希望能够在创建连接到 localhost:port 的主机的 SSH 隧道后,能够从外部连接到容器中运行的一些服务。
我不明白的部分是如何创建这些“端口连接”。我的理解是,通常(没有添加网络)这是通过防火墙规则完成的,这些规则在容器网络和主机网络之间打开一个端口。但在这里我认为我没有每个容器一个网络(或者我有?),我需要在 my-network 和主机的“localhost”接口之间建立连接。这可能吗?如何使用 docker-compose 指定它?
答案1
设置端口密钥Docker 引擎将处理其余的事情
version: "3"
services:
service-name:
image: image-name
container_name: container-name
ports:
- <host port>:<container-port>
networks:
- my-network
networks:
my-network:
external: true