Я пытался запустить реестр Docker на своем VPS, но мне не повезло. я читал документы здесьследующие направляющие как цифровой океан, а также гуглить и следить за другими руководствами и сообщениями. Я потратил лучшую половину вчерашнего дня, пытаясь отсортировать это.
Я запускаю настоящий простой реестр докеров. Это мой файл docker-compose.yml:
version: '3.3'
services:
registry:
image: registry:latest
ports:
- "5017:5000"
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
volumes:
- ./auth:/auth
- ./data:/data
у меня изначально было так
version: '3'
services:
registry:
image: registry:2
ports:
- "5000:5000"
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
volumes:
- ./data:/data
Я даже пытался запустить его без компоновки docker run p 5017:5000 --restart=always --name registry registry:2
и каждый раз, когда я бегу curl http://localhost:5017/v2/_catalog
я получил Recv failure: Connection reset by peer
. Я не понимаю. У меня есть куча других контейнеров Docker, которые работают нормально. Я не понимаю, в чем проблема.
Порт открыт
# lsof -i:5017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 20836 root 4u IPv4 88933941 0t0 TCP *:5017 (LISTEN)
docker-pr 20840 root 4u IPv6 88933946 0t0 TCP *:5017 (LISTEN)
Контейнер поднят
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb3c6320c44 registry:2 "/entrypoint.sh /etc…" 5 seconds ago Up 3 seconds 0.0.0.0:5017->5000/tcp, :::5017->5000/tcp registry
Первоначально я начал с того, что просто попытался подключиться из-за пределов моего VPS. Я продолжал получать ошибки 502 и 403. Я использую httpd Apache на CentOS 7.
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Mar 24 2022 14:57:57
Мой виртуальный хост:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName docker.domain.com
ServerAlias www.docker.domain.com
ErrorLog /var/www/Docker.domain.com/prod/Logs/httpd/error.log
CustomLog /var/www/Docker.domain.com/prod/Logs/httpd/requests.log combined
ProxyPreserveHost on
# ProxyRequests off
# ProxyVia On
ProxyPass / http://127.0.0.1:5017/
ProxyPassReverse / http://127.0.0.1:5017/
Header always set "Docker-Distribution-Api-Version" "registry/2.0"
Header onsuccess set "Docker-Distribution-Api-Version" "registry/2.0"
RequestHeader set X-Forwarded-Proto "https"
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/letsencrypt/live/docker.domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/docker.domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/docker.domain.com/chain.pem
</VirtualHost>
</IfModule>
Я даже остановил apache и попытался установить и использовать nginx:
server {
listen 80;
server_name docker.domain.com www.docker.domain.com;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/moby/moby/issues/1486)
chunked_transfer_encoding on;
location / {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
# To add basic authentication to v2 use auth_basic setting.
# auth_basic "Registry realm";
# auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;
## If $docker_distribution_api_version is empty, the header is not added.
## See the map directive above where this variable is defined.
# add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;
proxy_pass http://localhost:5017;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
Затем доступ к нему через https://docker.domain.com/v2
дает мне либо 502, либо 403 в зависимости от настроек моего VH.
Я был бы очень признателен за любое руководство. Благодарю вас!
Краткое примечание: я также разместил тот же вопрос на Форум докеровно ответа не получил.
Обновить
Это связано с моим брандмауэром iptables. Я отключил iptables, и все работает нормально. Я изучаю и опубликую обновление, как только выясню это.
apache-2.4 докер httpd докер-реестр
джваги