≡菜单

如何使用TLS SSL证书在3d捕鱼达人上设置安全Docker Registry

如果要为企业创建自定义Docker映像,则在托管Docker映像的位置有两个选择:

  1. Docker中心 –此托管的注册表服务是免费的,由Docker Inc.提供。它们还具有多种企业级功能,您可以在其中为组织创建多个帐户,设置自动构建等。
  2. 自托管Docker注册表–您可以在组织内设置将托管您自己的Docker映像的Docker注册表。

本教程说明了如何设置安全的自托管Docker注册表。

1.设置TLS证书和密钥

将您现有的crt和密钥文件复制到〜/ docker-certs目录

# mkdir /root/docker-certs

# cd /root/docker-certs

# ls -1
thegeekstuff.crt
thegeekstuff.key
intermediateCA.pem

在这个例子中,我’m使用thegeekstuff.crt证书文件和为我的Apache Web服务器生成的thegeekstuff.key文件。

有关如何创建自己的证书和密钥文件的详细信息,请参考以下内容: 如何生成SSL密钥,CSR和自签名证书

2.管理中级证书文件

在这种情况下,我还获得了来自证书颁发机构的中级证书。

对于docker Registry,您应该将证书和中间证书都合并到同一证书文件中。

即,将中间证书捆绑包的内容添加到证书文件中,如下所示。

cd /root/docker-certs

cat intermediateCA.pem >> thegeekstuff.crt

3.启动您的安全Docker注册表

现在,如下所示启动您的安全Docker注册表。

docker run -d -p 5000:5000 --restart=always --name 注册表 \
  -v /root/docker-certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/root/docker-certs/thegeekstuff.crt \
  -e REGISTRY_HTTP_TLS_KEY=/root/docker-certs/thegeekstuff.key \
  注册表:2

在上面的命令中:

  • Docker注册表在端口5000上开始使用
  • 该Docker容器的名称为“registry”
  • 包含证书/ root / docker-certs的本地目录在docker Registry容器内被映射为/ certs
  • REGISTRY_HTTP_TLS_CERTIFICATE变量指向具有完整路径的证书文件名
  • REGISTRY_HTTP_TLS_KEY变量指向具有完整路径的密钥文件名

启动Docker注册表后,您将’现在将看到注册表容器正在运行,如下所示:

# docker ps
CONTAINER ID  IMAGE       COMMAND                  CREATED         STATUS         PORTS                    NAMES
fe9c78c51ec1  注册表:2  "/entrypoint.sh /etc/"   30 seconds ago  Up 2 seconds   0.0.0.0:5000->5000/tcp   注册表

4.访问您的安全Docker注册表

设置安全的Docker注册表后,您可以从网络内部(或网络外部)的其他服务器访问它,并在其上使用所有标准docker命令。

例如,您可以如下所示将映像推入或拉出到此安全的docker注册表。

docker pull thegeekstuff.com:5000/mongodb

docker push thegeekstuff.com:5000/mongodb

5.设置InSecure Docker注册表

注意:如果您在使用安全Docker注册表时遇到麻烦,出于调试目的,请在不使用证书的情况下启动注册表,并查看其工作方式,如下所示:

docker run -d -p 5000:5000 --restart=always --name 注册表 注册表:2

当您尝试从Docker注册表中拉取映像(或执行任何其他操作)时,您可能会获得以下内容“收到的超大记录长度” error message.

例如,当我在远程服务器上(而不是在安装了Docker注册表的服务器上)执行以下命令时,出现以下错误消息:

# docker pull 192.168.101.1:5000/mongodb
Using default tag: latest
Error response from daemon: Get //192.168.101.1:5000/v1/_ping: tls: 收到的超大记录长度 20527

在这种情况下,192.168.101.1是运行不安全的Docker注册表的服务器(即没有安全证书)。

在这种情况下,应在远程服务器上允许不安全的注册表操作。为此,您必须通过“–insecure-registry”DOCKER_OPTS环境变量的参数。

在远程服务器上,修改此文件并添加以下行:

vi /etc/default/docker
DOCKER_OPTS="--insecure-registry 192.168.101.1:5000"

现在,在远程服务器上重新启动泊坞窗。

systemctl daemon-reload
systemctl stop docker
systemctl start docker

现在,由于设置了不安全的注册表选项,因此docker pull(或其他docker命令)将可以正常工作。

docker pull 192.168.101.1:5000/mongodb

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个3d捕鱼达人 Sysadmin教程
  2. 50个最常用的3d捕鱼达人命令(包括示例)
  3. 排名前25位的最佳3d捕鱼达人性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的3d捕鱼达人 Find命令示例
  5. 3d捕鱼达人 101 Hacks第二版电子书 3d捕鱼达人 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 0 评论… 加一 }

发表评论