docker - docker 私有注册表创建失败,并显示以下日志消息: level=fatal msg="open /home/vignesh/certs/localregistry.crt: no such file or directory"
问题描述
我正在尝试创建一个私有 docker 注册表。以下是证书目录和内容:
vignesh@vignesh-ThinkPad-E470:~/certs$ pwd
/home/vignesh/certs
vignesh@vignesh-ThinkPad-E470:~/certs$ ls -l
total 16
drwxr-xr-x 2 vignesh vignesh 4096 Jul 21 08:41 certs
-rwxrwxr-x 1 vignesh vignesh 920 Jul 21 08:41 localregistry.crt
-rwxrwxr-x 1 vignesh vignesh 712 Jul 21 08:41 localregistry.csr
-rwxrwxr-x 1 vignesh vignesh 963 Jul 21 08:41 localregistry.key
当我创建容器时,它在创建后很快被杀死,状态从“up”变为“restarting”
docker run -d \
--restart=always \
--name registry3 \
-v /home/vignesh/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/home/vignesh/certs/localregistry.crt \
-e REGISTRY_HTTP_TLS_KEY=/home/vignesh/certs/localregistry.key \
-p 443:443 \
registry:2
vignesh@vignesh-ThinkPad-E470:~/certs$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e165c1c3b08 registry:2 "/entrypoint.sh /etc…" 18 seconds ago Up 1 second 0.0.0.0:443->443/tcp, :::443->443/tcp, 5000/tcp registry3
vignesh@vignesh-ThinkPad-E470:~/certs$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e165c1c3b08 registry:2 "/entrypoint.sh /etc…" 19 seconds ago Restarting (1) 2 seconds ago registry3
vignesh@vignesh-ThinkPad-E470:~/certs$
在检查日志时,我看到以下致命错误说 .crt 文件未找到(还看到了一些其他非致命消息)。但我能够在消息中显示的路径中找到 .crt 文件:
vignesh@vignesh-ThinkPad-E470:~/certs$ docker logs 5e165c1c3b08
time="2021-07-21T03:33:03.10806134Z" level=fatal msg="open /home/vignesh/certs/localregistry.crt: no such file or directory"
vignesh@vignesh-ThinkPad-E470:~/certs$ ls -l /home/vignesh/certs/localregistry.crt
-rwxrwxr-x 1 vignesh vignesh 920 Jul 21 08:41 /home/vignesh/certs/localregistry.crt
你能帮我吗?
谢谢,
维涅什
解决方案
容器内的进程会看到容器挂载命名空间中的文件,而不是您的主机。由于您将目录映射到容器中的不同名称,因此您需要使用该路径:
docker run -d \
--restart=always \
--name registry3 \
-v /home/vignesh/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/localregistry.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/localregistry.key \
-p 443:443 \
registry:2
推荐阅读
- bash - 如何将二进制浮点值写入 bash 中的文件?
- lua - Roblox lua。区域名称中的空格
- javascript - 从 window.webkitSpeechRecognition 过滤脏话
- spring - 如何在spring web socket中设置消息DROP OverflowStrategy
- node.js - 使用 Smartsheet API:如何在用户通过身份验证并重定向 url 后访问用户数据?
- cocoahttpserver - CocoaHTTPServer 是否支持流式响应?
- mysql - 如何让查询包含来自另一个表的名称及其名称的 id
- java - 当一个线程死了它的对象会发生什么?
- python - KeyError: 'input_1_ib-0' 当我保存我的自动编码器模型时
- openedge - 如何以 30 分钟为间隔对 24 小时数据进行分组以获取计数?