PostgresQL 在 Docker 容器中运行的安全性

PostgresQL 在 Docker 容器中运行的安全性

Postgres 可作为 docker 镜像使用dockerhub/postgres。配置很容易通过环境变量完成,但它们也声明

警告:仅当您使用空的数据目录启动容器时,Docker 特定变量才会产生效果;任何预先存在的数据库在容器启动时都不会受到影响。

这让我怀疑这样的 Dockerfile 是否存在安全风险

FROM postgres
COPY *.sql /docker-entrypoint-initdb.d/

以及像这样的 docker-compose.yml

    database:
        build:
            context: ./database/
            dockerfile: ./Dockerfile
        environment:
            POSTGRES_PASSWORD: test123
        ports:
            - 5432:5432
        volumes:
            - databasevol:/var/lib/postgresql/data
        networks:
            - net

volumes:
    databasevol:
        driver: local

networks:
    net:
        driver: bridge

这将重建当前数据库映像,postgres:latest这可能导致数据库由版本 12.4 初始化,但稍后由版本 13.0 读取。 DBMS 可能会将数据目录识别为已损坏并清除它,这让我感到恐惧。

因此问题是,在 docker 容器中运行数据库是否安全?

答案1

我建议不要使用 postgres:latest,而是指定您想要的主版本(即 postgres:12)。

在更新 DBMS 时,没有可靠的 DBMS 会删除您的数据库,但是它可能会拒绝启动(PostgreSQL 也是如此)。

你可以相当安全地(无论如何都要有备份)通过列出的任何方法切换主要版本时升级集群官方文档

答案2

通过 docker 运行的数据库可能会出现一些小的性能问题,但其他方面没有什么不同。

但是您绝不应该在生产环境中使用“最新”作为您的图像标签;这就像打开自动更新一样!

相关内容