如何升级在 Docker 容器中运行的软件(例如 PostgreSQL)?

Pas*_*auf 12 docker

使用基础 PostgreSQL Docker 映像时,您选择一个 PostgreSQL 版本,启动一个容器并运行。伟大的!但是,将来升级到更新版本的 PostgreSQL 的正确/最佳方法是什么?

小智 6

目前没有简单的解决方案,但我发现最简单的方法是pg_dump使用旧版本,然后将该转储加载到新版本中。

https://github.com/docker-library/postgres/issues/37上有很多关于此问题的可能解决方案的讨论,并在https://github 上提供了基于 docker 的升级的概念证明。 com/tianon/docker-postgres-upgrade


小智 0

您只需要指定一个tag,它对应于镜像中的 PostgreSQL 版本。您不应该在运行容器的情况下手动升级 PostgreSQL,因为这违背了使用基础镜像的目的。

在 中Dockerfile,使用FROM指令

FROM postgres:9.4
Run Code Online (Sandbox Code Playgroud)

从命令行,使用run命令

$ sudo docker run [OPTIONS] postgres:9.4 [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)

  • 我可能是错的,但我认为这不会升级您的数据,因此您会遇到兼容性问题。例如,如果我正在运行 PSQL 9.3 并且想要升级到 9.4,则更改 Docker 映像的版本将使 9.4 二进制文件尝试引用和使用根据 9.3 格式构建的数据。缺少一个迁移步骤。这就是A Lee的回答所解决的问题 (2认同)