docker - 更新 docker 上的根证书

标签 docker ubuntu certificate

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

但是在使用 docker 容器时如何更新根证书呢?是否有一种常见的首选方式来执行此操作,或者必须使用最新的 docker 镜像重新部署容器?

最佳答案

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

Docker Hub 基础镜像,如 ubuntu实际上会定期更新,如果您查看 tag list您可以看到图像有几个带有日期戳的变体。因此,一种让您非常接近当前的方法是始终(让您的 CI 系统)在构建之前拉取基础镜像。

docker pull ubuntu:18.04
docker build .

如果您不能这样做,或者您正在使用某种更新频率较低的派生镜像,您可以手动运行 apt-get upgrade在你的 Dockerfile 中。在您安装软件包的同一个地方执行此操作是有意义的。它需要在同一个 RUN 中行作为匹配 apt-get update ,并且您可能需要一些方法来强制 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然后在其上安装更新。

关于docker - 更新 docker 上的根证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60452329/

相关文章:

python - 如何使用 NVIDIA 驱动程序/CUDA(支持tensorflow-gpu)和带有 pip 的 Python3 为图像制作 Dockerfile?

ruby-on-rails - 在 Ruby on Rails 中使用 Docker 时控制台打印不出现

iOS 开发证书和配置文件,可以在 Mac 上没有互联网吗?

BeagleBone Black 和 Ubuntu 12.04(Precise Pangolin)上的 OpenCV 链接问题

linux - 与 chrome 相关的 ubuntu 16.04 更新错误

certificate - 存折通行证无法安装

java - 在这种情况下自签名证书更好吗?

docker - Rancher(docker)磁盘使用清理

azure - 使用 Azure 应用服务而不是 Azure 容器实例来部署 Docker 应用程序有哪些优势?

ubuntu - 运行时 API 错误 38 : no CUDA-capable device is detected/Ubuntu black screen