我正在尝试在EC2实例Ubuntu Server 16.04上设置我自己的docker注册表。在遵循https://docs.docker.com/registry/deploying/之后,我目前使用LetsEncrypt运行nginx并使用docker run
命令成功启动了docker注册服务。但是,系统在执行docker push
时会响应连接被拒绝。
下面我用docker.example.com替换了我的FQDN,但DNS正确解析。
$ docker run -d -p 5000:5000 --restart=always --name docker-registry -v /etc/letsencrypt/live/docker.example.com:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem -e REGISTRY_HTTP_TLS_KEY=/certs/privkey.pem registry:2
$ docker pull ubuntu
$ docker tag ubuntu docker.example.com:5000/ubuntu
$ docker push docker.example.com:5000/ubuntu
The push refers to a repository [docker.example.com:5000/ubuntu]
Get https://docker.example.com:5000/v1/_ping: dial tcp 54.x.x.x:5000: getsockopt: connection refused
该服务似乎正在倾听。
$ sudo netstat -tlnp | grep :5000
tcp6 0 0 :::5000 :::* LISTEN 9655/docker-proxy
我甚至可以连接localhost。
$ nc -nv 127.0.0.1 5000
Connection to 127.0.0.1 5000 port [tcp/*] succeeded!
但尝试远程连接失败。
$ nc -nv 54.x.x.x 5000
nc: connect to 54.x.x.x port 5000 (tcp) failed: Connection refused
防火墙还允许5000 / tcp。
$ sudo ufw status | grep 5000
5000/tcp ALLOW Anywhere
5000/tcp (v6) ALLOW Anywhere (v6)
AWS ACL允许每个人(0.0.0.0/0)使用5000 / tcp。我错过了什么?