docker 网络和端口暴露

docker 网络和端口暴露

我很难理解如何使用 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

相关内容