【问题标题】:How to restrict remote access to postgresql docker container?如何限制对 postgresql docker 容器的远程访问?
【发布时间】:2020-05-21 11:47:15
【问题描述】:

使用 docker-compose,我开发了一个包含 Postgresql 数据库的网站。我使用相同的docker-compose.yml 文件将它部署在服务器上,但我发现我可以使用 psql 远程访问我的 postgres 服务器。

我目前在我的 docker-compose 中有这些行

version: '3.6'

services:
  db:
    image: postgres
    ports:
      - 5432:5432
    environment:
      POSTGRES_DB: my_website
      POSTGRES_USER: my_website
      POSTGRES_PASSWORD: my_password

有谁知道我如何只允许从 docker 网络内访问 postgres 数据库,以使其无法从主机操作系统外部访问?

【问题讨论】:

    标签: postgresql docker security networking docker-compose


    【解决方案1】:

    目前,您正在使用 ports 指令将 docker 容器内的端口 5432 绑定到主机端口。要仅在本地 docker 网络中访问端口,请将 ports 更改为 expose

    version: '3.6'
    services: 
      db: 
        image: postgres 
        expose: 
          - "5432"
         environment: 
          POSTGRES_DB: my_website
          POSTGRES_USER: my_website
          POSTGRES_PASSWORD: my_password
    

    【讨论】:

    • 我实际上发现我什至不需要公开那个端口。它也可以在没有任何端口或 yaml 文件中公开字段的情况下工作。
    • 太棒了!当 docker 镜像定义了 EXPOSE 部分时,它通常在 docker 网络中可用。
    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2016-03-20
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多