码头容器 SSL 证书

有没有什么优雅的方法可以将 SSL 证书添加到来自 docker pull 的映像中。

我正在寻找一种简单且可重复的方法,将文件添加到/etc/ssl/certs 并运行 update-ca-securities。(这应该包括 ubuntu 和 Debian 图片)。

我在 CoreOS 上使用 docker,CoreOS 机器信任所需的 SSL 证书,但是 docker 容器显然只有默认值。

我尝试使用 docker run --entrypoint=/bin/bash添加 cert 并运行 update-ca-certificates,但是这似乎永久地覆盖了入口点。

我现在还想知道,从主机复制到容器上安装 /etc/ssl/certs是否更优雅?这样做将隐式地允许容器信任与主机相同的内容。

我的工作中有一个恼人的代理人,他辞去了所有的工作:。这破坏了 SSL,使得容器的使用变得有些奇怪。

234400 次浏览

使用 -v将证书安装到 Docker 集装箱上:

docker run -v /host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"

正如在 以上评论中建议的那样,如果主机上的证书存储与来宾服务器兼容,那么您可以直接挂载它。

在 Debian 主机(和容器)上,我成功地完成了:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ...

我正在尝试做类似的事情。如上所述,我认为您可能希望使用自定义 Dockerfile (使用您提取的图像作为基本图像)、 ADD您的证书,然后 RUN update-ca-certificates构建一个新的图像。这样,每次从这个新映像启动一个容器时,都会有一个一致的状态。

# Dockerfile
FROM some-base-image:0.1
ADD you_certificate.crt:/container/cert/path
RUN update-ca-certificates

假设针对 Dockerfile 的 docker build产生了 IMAGE _ ID。在下一个 docker run -d [any other options] IMAGE_ID上,由该命令启动的容器将包含您的证书信息。简单易用。

可以使用相对路径将卷装入容器:

docker run -v `pwd`/certs:/container/path/to/certs ...


请注意 ABc0上的反勾,它会给你当前的工作目录。它假设你有工作目录执行的 docker run文件夹中的 certs文件夹。这对于本地开发非常有用,并且使 certs 文件夹对于您的项目是可见的。

我编写了一个脚本来包装 docker并在客户端中设置主机的 SSL 证书。

额外的好处是,您不需要重新构建任何容器-它应该只是工作。

它叫做 docker,所以你可以把它复制到你的 $PATH上比 docker高的地方,或者重命名并放到别的地方。

如果你有任何问题,请通过 Github 告诉我!

这不会直接回答你的问题,但这是我如何解决同样的问题。

我正在运行 golang:1.16.4-buster,我尝试使用证书都没有效果。我切换到 golang:1.17.8-alpine3.15,它从一开始就工作了,无需尝试加载任何证书。另外,还有一个更小的发行版。