docker 更新根证书

Update of root certificates on docker

如果我理解正确,例如在标准 Ubuntu 系统上,根证书由 ca-certificates 包提供,并在包本身更新时更新。

但是如何在使用 docker 容器时更新根证书?是否有一种通用的首选方法,或者必须使用最新的 docker 图像重新部署容器?

必须使用最新映像重新部署容器。

ubuntu actually get updated fairly regularly, and if you look at the tag list 这样的 Docker Hub 基础图像你可以看到有几个带有日期戳的图像变体。因此,一种让您非常接近当前的方法是始终(让您的 CI 系统)在构建之前拉取基础映像。

docker pull ubuntu:18.04
docker build .

如果您不能这样做,或者如果您使用的是某种更新频率较低的派生图像,则可以在 Docker 中手动 运行 apt-get upgrade ]文件。在安装软件包的同一个地方执行此操作很有意义。它需要与匹配的 apt-get update 在同一 RUN 行中,并且您可能需要一些方法来强制 Docker 不缓存该更新行以获取当前更新。

FROM python:3.8-slim

# Have an option to force rebuilds; the RUN line won't be
# cacheable if the dependency_stamp option changes
ARG dependency_stamp
ENV dependency_stamp=${dependency_stamp:-unknown}
RUN touch /dependencies.${dependency_stamp}

# Update base OS packages and install other things we need
RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive apt-get upgrade \
 && DEBIAN_FRONTEND=noninteractive apt-get install \
      --no-install-recommends --assume-yes \
      ...

如果您发现自己经常这样做,维护您自己的已升级到当前软件包但没有安装任何其他任何东西的基础映像可能会有所帮助;如果您发现自己正在做 那个,您可能会更好地控制该过程并获得更小的图像,如果您构建图像 FROM ubuntu 并安装 例如 Python,而不是构建映像 FROM python 然后在其上安装更新。