【问题标题】:How to hide ports from linked containers in docker如何在docker中隐藏链接容器的端口
【发布时间】:2019-10-29 05:47:04
【问题描述】:

我有一个暴露 80 和 443 端口的代理 nginx 容器,还有几个内部容器,其中包含暴露另一个端口的服务。

不幸的是,这个配置暴露了所有内部服务(它们在 docker 之外可见)

如何隐藏除代理之外的所有服务?

docker-compose 示例下一个:

version: '3'
services:
  proxy:
    image: nginx:1.15-alpine
    restart: unless-stopped
    privileged: true
    ports:
      - "80:80"
      - "443:443"
    network_mode: host
    depends_on:
      - front
      - cms
      - mongo
  front:
    container_name: front
    restart: unless-stopped
    build: front/
    ports:
      - '5001:80'
  cms:
    container_name: corp-cms
    restart: unless-stopped
    build: cms-backend
    links:
      - mongo
    ports:
      - '1337:1337'
  mongo:
    image: mongo
    restart: always
    ports:
      - '27017:27017'
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081

【问题讨论】:

    标签: docker-compose


    【解决方案1】:

    不要将服务的端口发布到主机。

    使用服务名称进行服务互通。

    您可以使用服务名称,因为

    Docker Compose creates a default network for you

    @David Maze 注意到了

    考虑使用docker stacks

    部署堆栈就像docker stack deploy --compose-file [compose_file_path] 一样简单

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2017-05-01
    • 2020-05-29
    • 1970-01-01
    • 2016-11-07
    • 2019-01-12
    • 2016-12-31
    相关资源
    最近更新 更多