Amazon web services Docker私有注册表:ping尝试失败

Amazon web services Docker私有注册表:ping尝试失败,amazon-web-services,dns,docker,docker-registry,Amazon Web Services,Dns,Docker,Docker Registry,我正在尝试设置我的私人Docker注册表,我正在遵循以下步骤。 我已经安装了Docker,并且能够在服务器上运行我的注册表。但我希望我的注册表可以更广泛地使用。 带有专用注册表的My docker服务器安装在AWS实例上。 我已使用keytool创建了自己的证书和密钥: docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CER

我正在尝试设置我的私人Docker注册表,我正在遵循以下步骤。 我已经安装了Docker,并且能够在服务器上运行我的注册表。但我希望我的注册表可以更广泛地使用。 带有专用注册表的My docker服务器安装在AWS实例上。 我已使用keytool创建了自己的证书和密钥:

docker run -d -p 5000:5000 --restart=always --name registry \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2
我可以通过以下方式ping此实例:

ping ec2-xx-xx-xx-xx.xx-west/east-1.compute.amazonaws.com
但推动是不可能的:

The push refers to a repository [ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/ubuntu] (len: 1)
unable to ping registry endpoint https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v0/
v2 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v2/: dial tcp 10.x.x.x:5000: i/o timeout
 v1 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.amazonaws.com:5000/v1/_ping: dial tcp 10.0.x.x:5000: i/o timeout
EDIT1: 更改aws安全组后。将端口5000设置为TCP,错误已更改:

unable to ping registry endpoint https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v0/
v2 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v2/: dial tcp 10.0.x.x:5000: connection refused
 v1 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v1/_ping: dial tcp 10.0.x.x:5000: connection refused
如何使其他aws实例可以访问我的注册表? 我的docker日志如下所示。他们找不到我的证书

level=fatal msg="open /certs/domain.crt: no such file or directory" 
我必须把这个证书放在我的容器里吗?(并由本人或使用现有工具使用keytool生成)

EDIT2: 我已经用这个生成了我自己的证书。 生成证书后,我重新启动了docker守护进程。我没有将domain.crt复制到ca.crt,因为路径不存在。也许我必须自己创造它

新错误:

unable to ping registry endpoint https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v0/
v2 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v2/: dial tcp 10.0.x.x:5000: no route to host
 v1 ping attempt failed with error: Get https://ec2-xx-xx-xx-xx.compute.amazonaws.com:5000/v1/_ping: dial tcp 10.0.x.x:5000: no route to host
但我的docker日志中仍然有以下内容:

level=fatal msg="open /certs/domain.crt: no such file or directory" 
尝试执行推送后,会在我现有的certsfolder中创建一个新的/certs文件夹

EDIT3: 找到证书的正确目录(/home/centos/certs/certs/*)后。我得到以下错误:

level=fatal msg="open /certs/domain.crt: permission denied

即使我执行了
chmod-R 777
chown-R root:root

您也需要将证书放在此目录中

    /etc/docker/certs.d/<your-domain-name>:5000/ca.crt
/etc/docker/certs.d/:5000/ca.crt

愚蠢的问题,但您是否在安全组防火墙中打开了端口5000?是的,它为UDPDOS打开
docker pull localhost:5000/image
在框本身上工作?在运行注册表的框上,
sudonetstat-tunlp
的输出是什么?您还可能需要在注册表框中配置nginx(注册表容器中有两个从内存装入的文件),以侦听对EC2公共DNS名称的请求。@ChrisMcKinnel,pull似乎可以工作,容器本身上该命令的输出包含端口5000:
tcp6 0:::5000::*LISTEN 2515/docker proxy
在我将UDP设置为TCP(通过https)后,输出已更改。我已经编辑了这个问题