问题:
在非 docker 解决方案中,SSL 证书可以位于 /etc/pki/CA/.... 中,并在 /etc/httpd/conf.d/*.conf 文件中引用这些证书。如何在 docker 镜像中管理/放置/使用这些 SSL 证书,以实现安全的 apache httpd 服务器,而不是成为 docker 镜像的一部分?
目标:
使用提供的 SSL 证书为安全的 apache httpd 服务器创建 docker 镜像。
解决此问题的方法:
Docker 卷可以通过使用 将证书从主机挂载到映像来解决该问题docker run -v /HOST/SSL/PATH:/CONTAINER/SSL/PATH
,然后可以从映像内部引用该证书。
这是可行的方法吗,或者可以用其他方法解决这个问题?
答案1
您还可以按如下方式创建命名数据卷。在此示例中,我将使用名为 /usr/local/apache/SSL 的目录。
- 在 apache 容器中创建一个空目录 /usr/local/apache/SSL 并提交
- 为您的数据卷启动一个新的基础容器并创建相同的空目录 /usr/local/apache/SSL(可能需要先创建 /usr/local/apache)
- 提交步骤2中创建的容器:docker commit CONTAINER_ID data/apachessl:latest)
- 创建命名数据卷容器:docker run --name=DATAmyApacheSSLCerts -v /usr/local/apache/SSL data/apachessl true
- 使用“一次性容器”将您的 SSL 证书复制到 /usr/local/apache/SSL 并将其放在那里:docker run -it --rm=true --volumes-from=DATAmyApacheSSLCerts APACHE_CONTAINER /bin/bash
- 启动你的“真实” Apache 镜像,但通过在 Apache 镜像的运行命令中添加 --volumes-from=DATAmyApacheSSLCerts 来挂载数据卷
现在,您对 /usr/local/apache/SSL 目录所做的任何更改都将保留,直到您删除 DATAmyApacheSSLCerts 实例。
Busybox 图像由于其尺寸非常小,因此数据量巨大。
您可能希望调整数据量并添加 conf 目录,以便更改持久化但不更改基础映像。只需在数据映像中创建 conf 目录,从基础 apache 安装中复制文件,并为 conf 目录添加另一个 -v 标志。
**注意:您需要在主图像中有一个与数据卷中共享的目录相对应的目录。
答案2
如果你不想将它们作为docker镜像的一部分,那么从主机安装它们的卷确实是一个好方法。