首页 > 解决方案 > 在 docker 服务中,如何公开共享一个端口和私有共享一个端口?

问题描述

我正在构建一个 docker 服务,其中包括一个 squid 和一个 icap 服务。Squid 在端口 3128 上运行,该端口是公共的。ICAP 服务在端口 1344 上运行,我不想公开,因为这将包含解密的 Web 流量。我希望只有 squid 才能访问它,它是 icap 客户端。

我的问题是,我该如何设置,以便 e2guardian 服务上的端口 1344 在 squid 可访问的专用网络上运行,但未发布到“客户”网络上的任何人都可以使用它的地方?

我包括我的 docker compose 文件。

“squidnet”网络实际上是一种遗留物。我想知道我是否可以将 squidnet 设为私有,然后仅在 squidnet 上共享 1344,但仍有 3128 公共用于本地 LAN 上的 squid 服务公共。我将如何更改 docker compose 文件以适应这种情况?

谢谢

version: "3"
services:
  squid:
    # replace username/repo:tag with your name and image details
    image: jusschwa/docker-squid-sslbump-rpi   
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    volumes:
      - "/workspace/etc/squid/squid.conf:/usr/local/squid/etc/squid.conf"
      - "/workspace/certs:/usr/local/squid/ssl"
    ports:
      - "3128:3128"
    networks:
      - squidnet
  e2guardian:
    image: jusschwa/e2guardian-rpi       
    ports:
      - "1344:1344"
    volumes:
      - "/workspace/etc/e2guardian:/etc/e2guardian"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - squidnet 
networks:
  squidnet:

标签: dockerdocker-compose

解决方案


如果expose您不想将端口发布到主机,请使用。当您使用ports它时,它会将端口发布到主机。 阅读更多

将容器的 3306 映射到主机 3306

ports:
 - 3306:3306

将容器的 3306 暴露给网络

expose:
 - 3306

推荐阅读