“更新 Docker”可能指三件完全不同的事。 您可能需要更新 Docker Engine、Docker Desktop,或是容器运行所依赖的镜像。
大多数开发者并不清楚自己实际需要更新哪一个,于是要么把所有东西都更新(冒着破坏环境的风险),要么完全不更新(从而暴露在漏洞面前)。 要安全地更新 Docker,您只需要弄清楚要更新的对象,并按各自情境的正确步骤操作即可。
在本文中,我将带您走一遍最安全、最常见的更新路径,省去猜测。 您将了解每种 Docker 更新的作用、在何种情况下需要它,以及如何按部就班地执行更新,而不破坏现有容器。
如果您刚接触 Docker,建议先学习 Introduction to Docker ,打好基础后再进行更新与维护。
“更新 Docker”到底是什么意思?
正如我所说,“更新 Docker”一词可能指三件不同的事,而把它们混为一谈,往往就会意外破坏一个正在工作的系统。您可能是在更新 Docker Engine(运行容器的核心软件)、Docker Desktop(图形界面应用),或是应用所使用的容器镜像。
每种更新类型对系统的影响都不同。让我来解释。
更新 Docker Engine vs. 更新镜像
Docker Engine 是管理容器的运行时。
当您更新 Docker Engine 时,实际上是在升级在系统上创建、运行和管理容器的软件。这是系统级的更改,会影响 Docker 的运作方式。您会安装新的二进制文件、更新守护进程,并可能改变 Docker 与操作系统交互的方式。
容器镜像 是容器运行的蓝图。
更新镜像意味着拉取该容器中打包的应用程序的较新版本。比如,如果您在容器中运行 PostgreSQL 14,想升级到 PostgreSQL 18,更新镜像就是拉取该新版本。Docker Engine 本身并不会改变——变化的只是容器内部的软件。
关键要记住的是:更新 Docker Engine 可能影响您所有的容器,而更新镜像只会影响基于该特定镜像构建的容器。
正在运行的容器会发生什么
Docker Engine 的更新不会自动重启您的容器。
在 Linux 上更新 Docker Engine 时,Docker 守护进程会重启,但在大多数现代设置中,您的容器会继续运行。Docker 使用一个名为 实时恢复(live restore) 的功能,在守护进程更新期间保持容器存活。您可以运行 docker info 并查看 “Live Restore Enabled: true” 来确认是否已启用。
Docker Desktop 则不同。
在 macOS 和 Windows 上,更新 Docker Desktop 会停止所有正在运行的容器 。更新过程中整个 Docker 虚拟机会重启。更新完成后,容器不会自动启动。您需要手动启动,或使用重启策略。
镜像更新需要您重新创建容器。
拉取新镜像版本不会触碰正在运行的容器。如果要使用更新后的镜像,您需要停止旧容器,将其移除,并基于更新后的镜像创建新容器。
这也是为什么要理解 Engine 更新与镜像更新的区别:前者可能需要规划停机时间,后者不需要。
为何应该更新 Docker
过时的 Docker 版本会让您暴露在已知安全漏洞与兼容性问题之下。如果这还不足以说服您,请继续阅读。
安全性与稳定性
每个 Docker 发行版都会修补前一版本中发现的安全缺陷。
运行旧版本意味着您容易受到攻击者已知的利用方式的威胁。安全研究人员和 Docker 社区会积极发现并报告这些问题,Docker 背后的公司也会在新版本中修复。如果您不更新,就等于把门大开。
此外,每个版本都会提升稳定性。 新版中的错误修复会解决大多数用户遇到的恼人问题,这些问题在生产环境中甚至可能导致容器宕机。
您不必每次发布新版本都立刻更新,但几个月不更新,就意味着错过了几十个安全补丁和稳定性改进。
与现代系统的兼容性
无论您是否更新 Docker,操作系统和开发工具都在不断前进。
您的操作系统会更新,CI/CD 工具会新增功能,Kubernetes 等编排平台最终也会放弃对旧 Docker 版本的支持。如果您运行的是两年前的 Docker,很快就会出现兼容性警告,随后是错误,最后彻底崩溃。
现代容器镜像也常常依赖较新的 Docker 功能。镜像构建者会使用多阶段构建、BuildKit 优化,以及旧版 Docker 不支持的存储驱动。您可能会拉到一个在过时环境上根本无法运行的镜像。
如果您计划在 Docker 旁边使用编排工具,我们的 Introduction to Kubernetes 课程是很好的入门选择。
如何检查当前 Docker 版本
在更新之前,先检查当前版本是个好习惯。
验证已安装的版本
运行以下命令查看当前的 Docker 版本:
docker --version技术支持
这会显示系统上安装的 Docker Engine 版本:
版本号遵循语义化版本:major.minor.patch。在这个例子中,29 是主版本,1 是次版本,3 是修订版本。
如需了解有关 Docker 设置的更多细节,请改为运行以下命令:
docker info技术支持
它会输出大量关于 Docker 安装的信息,包括服务器版本、存储驱动、内核版本,以及是否启用了实时恢复等功能。进行基础更新不需要掌握所有信息,但在排错时很有用。
如何判断是否需要更新
次版本更新通常是安全的,应定期应用。
如果您在 Docker 29.1.0,而 29.1.3 可用,那就是包含错误修复与安全补丁的次要更新。这类更新很少会破坏现有环境,您应在合适的时间应用它们。
主版本更新需要更谨慎。 从 Docker 24 跨到 Docker 29 可能会引入不兼容更改、弃用特性或新要求。在跨主版本更新前,请查看目标版本的 Docker 发布说明,了解变更内容。
您可以在官方 Docker 文档或 GitHub 发布页找到最新版本。将其与 docker –version 的输出对比,看看自己落后了多少。
如何更新 Docker Engine
更新流程取决于您是在 Linux 上运行 Docker Engine,还是在 macOS/Windows 上使用 Docker Desktop。
在 Linux 上更新 Docker
Linux 使用系统的包管理器来更新 Docker Engine。
具体命令因发行版而异,但流程一致:
以下是在 Ubuntu 和基于 Debian 的系统上的做法:
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io技术支持
对于 CentOS 或 Fedora 等基于 Red Hat 的系统,运行以下命令:
sudo yum update docker-ce docker-ce-cli containerd.io技术支持
更新过程中 Docker 守护进程会自动重启。
如果启用了实时恢复(用 docker info 检查),正在运行的容器会继续运行。否则,它们会停止,您需要手动启动。
更新完成后,您可以验证新版本:
docker --version技术支持
如果您是通过便捷脚本而非软件源安装的 Docker,需要重新下载并运行该脚本进行更新。
在 macOS 和 Windows 上更新 Docker Desktop
Docker Desktop 的更新方式不同于 Linux 上的 Docker Engine。
默认启用自动更新。Docker Desktop 在启动时会检查更新,并在有新版本可用时显示通知。点击通知,Docker Desktop 会为您下载并安装更新。
如果您更喜欢手动更新,打开 Docker Desktop 设置,找到 “Check for updates” 选项。您可以在这里关闭自动更新,并在需要时手动检查。
手动更新 Docker 也没有问题。
只需从 Docker 官网下载最新版 Docker Desktop 安装程序并运行。安装程序会检测现有安装,并在不移除镜像与容器的情况下进行升级。
请记住, Docker Desktop 在更新期间会停止所有容器。 整个 Docker 虚拟机会重启,因此要预留几分钟的停机时间。除非为容器配置了 --restart always 等重启策略,否则不会自动重启。
更新完成后,打开 Docker Desktop,等待其完全启动,再运行 docker –version 确认新版本。
逐个管理多个容器并不值得夸耀。阅读我们的 Docker Compose 指南 ,了解多容器构建。
如何验证 Docker 更新
Docker 现在应已更新——但我们还是来验证一下是否确实如此。
确认已安装的版本
首先检查版本号:
docker --version技术支持
输出应显示您的目标版本。如果仍显示旧版本,说明更新未正确完成,或您需要重启终端以加载新二进制文件。
我这台机器上的版本没有变化,只是因为我本来就在最新版本。
下一步是检查 Docker 守护进程状态:
docker info技术支持
如果报错 “Cannot connect to the Docker daemon”,说明守护进程未运行。在 Linux 上,用以下命令重启:
sudo systemctl restart docker技术支持
在 macOS 和 Windows 上,只需打开 Docker Desktop 并等待其启动。
想掌握日常容器工作的关键命令?阅读我们近期的文章 Top 18 Docker Commands 。
运行测试容器
为验证更新后是否一切正常,尝试拉取并运行一个简单容器:
docker run hello-world技术支持
该命令会拉取微型镜像 hello-world 并运行。您将看到一条消息,说明 Docker 工作正常:
在 Engine 更新后如何更新 Docker 镜像
更新 Docker Engine 并不会更新您的容器镜像——这需要单独处理。
拉取较新的镜像版本
您可以运行 docker pull 命令获取镜像的最新版本:
docker pull postgres技术支持
这会拉取带有 latest 标签的最新 PostgreSQL 镜像。但它不一定代表“真正最新”——这只是一个标签,镜像维护者可以将其指向任意版本。
为避免意外,建议始终使用明确的标签:
docker pull postgres:18技术支持
这会明确拉取 PostgreSQL 18 版本。如果 18.1 发布了,再次运行该命令会在 18 大版本系列内拉取更新到 18.1 的镜像。
对于其他镜像,先用 docker images 命令查看当前版本。然后按需拉取新版本。您的现有容器会继续运行旧镜像,直到您基于新镜像重新创建它们。
重建自定义镜像
如果您使用 Dockerfile 构建自己的镜像,在拉取基础镜像更新后,需要重建它们。
比如您的 Dockerfile 以 FROM python:3.14 开头。即便您拉取了最新的 python:3.14 镜像,自定义镜像仍会使用旧的缓存层。请重建以获取更新:
docker build --no-cache -t myapp:latest .技术支持
这会忽略所有缓存层,从头开始重建。虽然更耗时,但能确保使用到最新的基础镜像与依赖项。
重建完成后,停止旧容器,使用更新后的镜像启动新容器——更新不会自动应用到正在运行的容器。
更新后需要释放磁盘空间?我们的 Docker Prune 教程将教您如何安全清理未使用的镜像和容器。
常见的 Docker 更新问题
Docker 更新失败的方式往往是可预见的,而且大多数问题都有快速修复方法。下面是我亲身遇到的几个例子。
权限、服务与安装错误
“Permission denied(权限被拒绝)” 错误 意味着您的用户无法访问 Docker 套接字。
在 Linux 上,将您的用户添加到 docker 组:
sudo usermod -aG docker $USER技术支持
注销并重新登录以使更改生效。此后运行 docker 命令通常无需再使用 sudo。
“Cannot connect to the Docker daemon” 错误 表示 Docker 未在运行。
检查服务状态:
sudo systemctl status docker技术支持
如果服务已停止或失败,启动它:
sudo systemctl start docker技术支持
如果仍无法启动,使用 journalctl -u docker 查看日志,定位问题。
在 macOS 和 Windows 上,只需启动 Docker Desktop 应用。
安装时的包冲突 发生在旧的 Docker 软件包与新的相互干扰时。
您可以在安装更新版本之前运行以下命令移除旧的 Docker 软件包:
sudo apt remove docker docker-engine docker.io containerd runc技术支持
然后按照您的发行版的官方安装说明重新安装 Docker。
回滚或降级 Docker
如果更新破坏了您的环境,您可以降级到先前版本。
在 Linux 上,在包管理器中查看可用版本:
apt list -a docker-ce技术支持
安装指定的旧版本:
sudo apt install <specific-version>技术支持
将标签替换为您需要的版本。降级过程中,您的容器与镜像会保持不变。
在 macOS 和 Windows 上,回滚更简单。从 Docker 的发布归档下载旧版安装程序并运行。安装程序会将当前版本替换为旧版本,而不会动到您的容器或镜像。
Docker 更新最佳实践
最重要的建议是定期保持 Docker 更新。如果您多年未更新,请在发布页中查找任何不兼容变更。
安全地保持 Docker 最新
设置提醒定期检查 Docker 更新,而不是等问题出现才处理。
每月检查一次更新——并非每次都要安装,但您需要知道有什么可用更新。安全补丁比功能更新更重要,因此在发布时要优先考虑它们。
一个好做法是在更新前记录当前设置。记下 Docker 版本,用 docker ps 列出正在运行的容器,并记录任何自定义配置。如果出现问题,您会清楚到底改变了什么。
如果在生产中运行 Docker,请先在开发机器上测试更新。搭建类似环境,先在那里更新 Docker,并确保容器仍能正常工作,再动生产环境。
何时自动化更新
在停机无关紧要的开发环境中,自动化是合理的。
您可以配置 Docker Desktop 自动更新,或在 Linux 上设置无人值守升级以获取安全补丁。这对本地开发机器很适合,因为重启不会中断关键服务。
没有适当保障措施,不要在生产环境中自动更新。
在对运行真实负载的系统应用更新之前,您需要监控、回滚策略与测试。Docker 更新可能会破坏某些东西——在生产系统上,您需要人工参与。
我个人偏好通过每月提醒进行手动更新,从未遇到问题。
结语
更新 Docker 的第一步是弄清楚您到底在更新什么。
Docker Engine 更新、Docker Desktop 更新与镜像更新是三件不同的事,对系统的影响也不同。明确所需的更新类型,遵循您的平台对应的正确流程,并在事后进行测试。就这么简单。
给手机设个提醒。每月检查更新,优先关注安全补丁,并在变更前记录当前运行状况。更新不该让您焦虑——它们应该是例行的维护任务。
在生产环境中,请记住容器依赖于 Docker 的正常运行。像对待其他关键基础设施变更一样对待更新——谨慎、经过测试,并在出现问题时有回滚计划。
现在您已了解如何更新 Docker——下一步是通过我们的 Intermediate Docker 课程进一步提升容器技能。您将学习网络、进阶容器镜像与 Docker Compose 等内容。
“更新 Docker”可能指三件完全不同的事。您可能需要更新 Docker Engine、Docker Desktop,或是容器运行所依赖的镜像。
大多数开发者并不清楚自己实际需要更新哪一个,于是要么把所有东西都更新(冒着破坏环境的风险),要么完全不更新(从而暴露在漏洞面前)。要安全地更新 Docker,您只需要弄清楚要更新的对象,并按各自情境的正确步骤操作即可。
在本文中,我将带您走一遍最安全、最常见的更新路径,省去猜测。您将了解每种 Docker 更新的作用、在何种情况下需要它,以及如何按部就班地执行更新,而不破坏现有容器。
如果您刚接触 Docker,建议先学习 Introduction to Docker,打好基础后再进行更新与维护。
“更新 Docker”到底是什么意思?
正如我所说,“更新 Docker”一词可能指三件不同的事,而把它们混为一谈,往往就会意外破坏一个正在工作的系统。您可能是在更新 Docker Engine(运行容器的核心软件)、Docker Desktop(图形界面应用),或是应用所使用的容器镜像。
每种更新类型对系统的影响都不同。让我来解释。
更新 Docker Engine vs. 更新镜像
Docker Engine 是管理容器的运行时。
当您更新 Docker Engine 时,实际上是在升级在系统上创建、运行和管理容器的软件。这是系统级的更改,会影响 Docker 的运作方式。您会安装新的二进制文件、更新守护进程,并可能改变 Docker 与操作系统交互的方式。
容器镜像 是容器运行的蓝图。
更新镜像意味着拉取该容器中打包的应用程序的较新版本。比如,如果您在容器中运行 PostgreSQL 14,想升级到 PostgreSQL 18,更新镜像就是拉取该新版本。Docker Engine 本身并不会改变——变化的只是容器内部的软件。
关键要记住的是:更新 Docker Engine 可能影响您所有的容器,而更新镜像只会影响基于该特定镜像构建的容器。
正在运行的容器会发生什么
Docker Engine 的更新不会自动重启您的容器。
在 Linux 上更新 Docker Engine 时,Docker 守护进程会重启,但在大多数现代设置中,您的容器会继续运行。Docker 使用一个名为实时恢复(live restore)的功能,在守护进程更新期间保持容器存活。您可以运行
docker info并查看 “Live Restore Enabled: true” 来确认是否已启用。Docker Desktop 则不同。
在 macOS 和 Windows 上,更新 Docker Desktop会停止所有正在运行的容器。更新过程中整个 Docker 虚拟机会重启。更新完成后,容器不会自动启动。您需要手动启动,或使用重启策略。
镜像更新需要您重新创建容器。
拉取新镜像版本不会触碰正在运行的容器。如果要使用更新后的镜像,您需要停止旧容器,将其移除,并基于更新后的镜像创建新容器。
这也是为什么要理解 Engine 更新与镜像更新的区别:前者可能需要规划停机时间,后者不需要。
为何应该更新 Docker
过时的 Docker 版本会让您暴露在已知安全漏洞与兼容性问题之下。如果这还不足以说服您,请继续阅读。
安全性与稳定性
每个 Docker 发行版都会修补前一版本中发现的安全缺陷。
运行旧版本意味着您容易受到攻击者已知的利用方式的威胁。安全研究人员和 Docker 社区会积极发现并报告这些问题,Docker 背后的公司也会在新版本中修复。如果您不更新,就等于把门大开。
此外,每个版本都会提升稳定性。 新版中的错误修复会解决大多数用户遇到的恼人问题,这些问题在生产环境中甚至可能导致容器宕机。
您不必每次发布新版本都立刻更新,但几个月不更新,就意味着错过了几十个安全补丁和稳定性改进。
与现代系统的兼容性
无论您是否更新 Docker,操作系统和开发工具都在不断前进。
您的操作系统会更新,CI/CD 工具会新增功能,Kubernetes 等编排平台最终也会放弃对旧 Docker 版本的支持。如果您运行的是两年前的 Docker,很快就会出现兼容性警告,随后是错误,最后彻底崩溃。
现代容器镜像也常常依赖较新的 Docker 功能。镜像构建者会使用多阶段构建、BuildKit 优化,以及旧版 Docker 不支持的存储驱动。您可能会拉到一个在过时环境上根本无法运行的镜像。
如果您计划在 Docker 旁边使用编排工具,我们的Introduction to Kubernetes课程是很好的入门选择。
如何检查当前 Docker 版本
在更新之前,先检查当前版本是个好习惯。
验证已安装的版本
运行以下命令查看当前的 Docker 版本:
这会显示系统上安装的 Docker Engine 版本:
版本号遵循语义化版本:
major.minor.patch。在这个例子中,29 是主版本,1 是次版本,3 是修订版本。如需了解有关 Docker 设置的更多细节,请改为运行以下命令:
它会输出大量关于 Docker 安装的信息,包括服务器版本、存储驱动、内核版本,以及是否启用了实时恢复等功能。进行基础更新不需要掌握所有信息,但在排错时很有用。
如何判断是否需要更新
次版本更新通常是安全的,应定期应用。
如果您在 Docker 29.1.0,而 29.1.3 可用,那就是包含错误修复与安全补丁的次要更新。这类更新很少会破坏现有环境,您应在合适的时间应用它们。
主版本更新需要更谨慎。 从 Docker 24 跨到 Docker 29 可能会引入不兼容更改、弃用特性或新要求。在跨主版本更新前,请查看目标版本的 Docker 发布说明,了解变更内容。
您可以在官方 Docker 文档或 GitHub 发布页找到最新版本。将其与
docker –version的输出对比,看看自己落后了多少。如何更新 Docker Engine
更新流程取决于您是在 Linux 上运行 Docker Engine,还是在 macOS/Windows 上使用 Docker Desktop。
在 Linux 上更新 Docker
Linux 使用系统的包管理器来更新 Docker Engine。
具体命令因发行版而异,但流程一致:
以下是在 Ubuntu 和基于 Debian 的系统上的做法:
对于 CentOS 或 Fedora 等基于 Red Hat 的系统,运行以下命令:
更新过程中 Docker 守护进程会自动重启。
如果启用了实时恢复(用
docker info检查),正在运行的容器会继续运行。否则,它们会停止,您需要手动启动。更新完成后,您可以验证新版本:
如果您是通过便捷脚本而非软件源安装的 Docker,需要重新下载并运行该脚本进行更新。
在 macOS 和 Windows 上更新 Docker Desktop
Docker Desktop 的更新方式不同于 Linux 上的 Docker Engine。
默认启用自动更新。Docker Desktop 在启动时会检查更新,并在有新版本可用时显示通知。点击通知,Docker Desktop 会为您下载并安装更新。
如果您更喜欢手动更新,打开 Docker Desktop 设置,找到 “Check for updates” 选项。您可以在这里关闭自动更新,并在需要时手动检查。
手动更新 Docker 也没有问题。
只需从 Docker 官网下载最新版 Docker Desktop 安装程序并运行。安装程序会检测现有安装,并在不移除镜像与容器的情况下进行升级。
请记住,Docker Desktop 在更新期间会停止所有容器。 整个 Docker 虚拟机会重启,因此要预留几分钟的停机时间。除非为容器配置了
--restart always等重启策略,否则不会自动重启。更新完成后,打开 Docker Desktop,等待其完全启动,再运行
docker –version确认新版本。逐个管理多个容器并不值得夸耀。阅读我们的Docker Compose 指南,了解多容器构建。
如何验证 Docker 更新
Docker 现在应已更新——但我们还是来验证一下是否确实如此。
确认已安装的版本
首先检查版本号:
输出应显示您的目标版本。如果仍显示旧版本,说明更新未正确完成,或您需要重启终端以加载新二进制文件。
我这台机器上的版本没有变化,只是因为我本来就在最新版本。
下一步是检查 Docker 守护进程状态:
如果报错 “Cannot connect to the Docker daemon”,说明守护进程未运行。在 Linux 上,用以下命令重启:
在 macOS 和 Windows 上,只需打开 Docker Desktop 并等待其启动。
想掌握日常容器工作的关键命令?阅读我们近期的文章Top 18 Docker Commands。
运行测试容器
为验证更新后是否一切正常,尝试拉取并运行一个简单容器:
该命令会拉取微型镜像
hello-world并运行。您将看到一条消息,说明 Docker 工作正常:在 Engine 更新后如何更新 Docker 镜像
更新 Docker Engine 并不会更新您的容器镜像——这需要单独处理。
拉取较新的镜像版本
您可以运行
docker pull命令获取镜像的最新版本:这会拉取带有
latest标签的最新 PostgreSQL 镜像。但它不一定代表“真正最新”——这只是一个标签,镜像维护者可以将其指向任意版本。为避免意外,建议始终使用明确的标签:
这会明确拉取 PostgreSQL 18 版本。如果 18.1 发布了,再次运行该命令会在 18 大版本系列内拉取更新到 18.1 的镜像。
对于其他镜像,先用
docker images命令查看当前版本。然后按需拉取新版本。您的现有容器会继续运行旧镜像,直到您基于新镜像重新创建它们。重建自定义镜像
如果您使用 Dockerfile 构建自己的镜像,在拉取基础镜像更新后,需要重建它们。
比如您的 Dockerfile 以
FROM python:3.14开头。即便您拉取了最新的python:3.14镜像,自定义镜像仍会使用旧的缓存层。请重建以获取更新:这会忽略所有缓存层,从头开始重建。虽然更耗时,但能确保使用到最新的基础镜像与依赖项。
重建完成后,停止旧容器,使用更新后的镜像启动新容器——更新不会自动应用到正在运行的容器。
更新后需要释放磁盘空间?我们的Docker Prune 教程将教您如何安全清理未使用的镜像和容器。
常见的 Docker 更新问题
Docker 更新失败的方式往往是可预见的,而且大多数问题都有快速修复方法。下面是我亲身遇到的几个例子。
权限、服务与安装错误
“Permission denied(权限被拒绝)” 错误意味着您的用户无法访问 Docker 套接字。
在 Linux 上,将您的用户添加到 docker 组:
注销并重新登录以使更改生效。此后运行 docker 命令通常无需再使用
sudo。“Cannot connect to the Docker daemon” 错误表示 Docker 未在运行。
检查服务状态:
如果服务已停止或失败,启动它:
如果仍无法启动,使用
journalctl -u docker查看日志,定位问题。在 macOS 和 Windows 上,只需启动 Docker Desktop 应用。
安装时的包冲突发生在旧的 Docker 软件包与新的相互干扰时。
您可以在安装更新版本之前运行以下命令移除旧的 Docker 软件包:
然后按照您的发行版的官方安装说明重新安装 Docker。
回滚或降级 Docker
如果更新破坏了您的环境,您可以降级到先前版本。
在 Linux 上,在包管理器中查看可用版本:
安装指定的旧版本:
将标签替换为您需要的版本。降级过程中,您的容器与镜像会保持不变。
在 macOS 和 Windows 上,回滚更简单。从 Docker 的发布归档下载旧版安装程序并运行。安装程序会将当前版本替换为旧版本,而不会动到您的容器或镜像。
Docker 更新最佳实践
最重要的建议是定期保持 Docker 更新。如果您多年未更新,请在发布页中查找任何不兼容变更。
安全地保持 Docker 最新
设置提醒定期检查 Docker 更新,而不是等问题出现才处理。
每月检查一次更新——并非每次都要安装,但您需要知道有什么可用更新。安全补丁比功能更新更重要,因此在发布时要优先考虑它们。
一个好做法是在更新前记录当前设置。记下 Docker 版本,用
docker ps列出正在运行的容器,并记录任何自定义配置。如果出现问题,您会清楚到底改变了什么。如果在生产中运行 Docker,请先在开发机器上测试更新。搭建类似环境,先在那里更新 Docker,并确保容器仍能正常工作,再动生产环境。
何时自动化更新
在停机无关紧要的开发环境中,自动化是合理的。
您可以配置 Docker Desktop 自动更新,或在 Linux 上设置无人值守升级以获取安全补丁。这对本地开发机器很适合,因为重启不会中断关键服务。
没有适当保障措施,不要在生产环境中自动更新。
在对运行真实负载的系统应用更新之前,您需要监控、回滚策略与测试。Docker 更新可能会破坏某些东西——在生产系统上,您需要人工参与。
我个人偏好通过每月提醒进行手动更新,从未遇到问题。
结语
更新 Docker 的第一步是弄清楚您到底在更新什么。
Docker Engine 更新、Docker Desktop 更新与镜像更新是三件不同的事,对系统的影响也不同。明确所需的更新类型,遵循您的平台对应的正确流程,并在事后进行测试。就这么简单。
给手机设个提醒。每月检查更新,优先关注安全补丁,并在变更前记录当前运行状况。更新不该让您焦虑——它们应该是例行的维护任务。
在生产环境中,请记住容器依赖于 Docker 的正常运行。像对待其他关键基础设施变更一样对待更新——谨慎、经过测试,并在出现问题时有回滚计划。
现在您已了解如何更新 Docker——下一步是通过我们的 Intermediate Docker 课程进一步提升容器技能。您将学习网络、进阶容器镜像与 Docker Compose 等内容。