首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头:只对主机和其他集装箱开放集装箱港口,不对互联网开放。

问码头:只对主机和其他集装箱开放集装箱港口,不对互联网开放。
EN

Stack Overflow用户
提问于 2022-01-11 14:43:40
回答 1查看 141关注 0票数 0

为了学习目的,我正在制作一个ETL应用程序示例。我希望有两个容器:一个MySQL容器和一个与Redis一起运行的Python容器来提供数据。

我想打开这些集装箱上的港口,但出于明显的安全原因,我不想向互联网开放它们。

如果我在这些容器上打开端口,它们是只对主机开放,还是主机也必须打开这些端口?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 14:52:03

如果您没有任何Compose ports:或docker run -p选项,容器将能够彼此通信,但无法从主机或离开主机到达。示例组合设置:

代码语言:javascript
复制
version: '3.8'
services:
  app:
    build: .
    ports: ['8080:8080']  # the application itself is visible
    environment:
      PGHOST: postgres    # using normal Docker inter-container communication
      REDIS_HOST: redis
  postgres:
    image: postgres:13
    # no ports:
  redis:
    image: redis:6
    # no ports:

还可以使用可选绑定地址设置ports:。如果该地址为127.0.0.1,则可以从主机系统上的非容器进程访问已发布的端口。其他主机将无法连接到它,容器也无法使用主机网关地址或host.docker.internal连接到它。

代码语言:javascript
复制
services:
  postgres:
    # from non-container processes on the host,
    # PGHOST=localhost PGPORT=54321 reaches this container
    #
    # from other containers in this Compose file,
    # PGHOST=postgres PGPORT=5432 still works
    ports: ['127.0.0.1:54321:5432']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70668677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档