Как заставить Artifactory служить в качестве реестра Docker? - PullRequest
0 голосов
/ 11 мая 2018

Я хочу, чтобы Artifactory был реестром Docker.Я пытаюсь следовать указаниям здесь .

Когда я обновляю файл / etc / default / docker, я не могу перезапустить службу Docker.Я получаю сообщение об ошибке при попытке перезапустить службу Docker.

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

Просмотр этой ошибки мне не помог.Поэтому я пытаюсь обойти эту проблему, не изменяя этот файл.

Когда я пытаюсь выполнить команду «docker login docker.artifactory», я получаю следующее:

Error response from daemon: Get https://docker.artifactory/v1/users/: x509: certificate is valid for localhost, not docker.artifactory

Поэтому я попробовал эту команду""Но это приводит к следующему:

Error response from daemon: Login: {
  "errors" : [ {
    "status" : 404,
    "message" : "Not Found"
  } ]
} (Code: 404; Headers: map[Server:[Artifactory/5.11.0] X-Artifactory-Id:[fc560f4748814da2:18461899:1635019eb47:-8000] Date:[Fri, 11 May 2018 20:15:27 GMT] Content-Type:[application/json]])

Я использую Ubuntu 16, Docker 1.13.1 и Artifactory версии 5.11.Я могу войти в Artifactory из GUI, работающего в контейнере Docker.Я не могу заставить Artifactory работать в качестве реестра Docker, несмотря на попытки следовать указаниям в двух разных дистрибутивах Linux.

Моя вторая попытка состояла в том, чтобы попытаться начать развертывание Artifactory с помощью docker-compose в качестве реестра Docker на CentOS.сервер.Но это также не удается.По неясным для меня причинам три контейнера Docker, которые должны поддерживать реестр (Postgres, Artifactory и Nginx), остаются в состоянии «Перезапуск».Я не могу заставить веб-интерфейс Artifactory работать должным образом в CentOS.

Я пробовал много вещей, чтобы получить указания для меня.Что я делаю неправильно?Как я могу получить Artifactory в качестве реестра Docker?

1 Ответ

0 голосов
/ 12 мая 2018

Изменение, которое вы внесли в / etc / default / docker, возможно, включало синтаксическую ошибку, поэтому Docker не запустился.Чтобы найти причину, по которой он не запустился, вы должны взглянуть на вывод "systemctl status docker.service" и "journalctl -xe".

Я бы предпочел пойти на ваш второй подход, а неизмените / etc / default / docker, но вместо этого выдайте настоящий сертификат.Перейдите на letsencrypt.org и выдайте подстановочный сертификат для artifactory.your.domain и * .artifactory.your.domain, затем настройте реестр Docker с помощью метода домена.

И вам, вероятно, не нуженреестр v1, если у вас нет явной причины для этого.Попробуйте curl -L -u ... https://artifactory.your.domain/v2/_catalog, чтобы проверить, работает ли ваш реестр.404 ошибки, подобные приведенной выше, указывают на неправильно настроенный обратный прокси-сервер.

Моя конфигурация выглядит следующим образом.Это позволяет мне связаться с artifactory по адресу artifactory.my.domain, докер регистрируется на WHATEVER.artifactory.mydomain и мой виртуальный реестр докеров под названием 'docker' на docker.my.domain, чтобы получить подходящее имя;)

server {
    listen [2a01:...]:443 http2;
    listen ...7:443 http2;
    server_name artifactory.my.domain;
    include tls.conf;

    location / {
        proxy_set_header X-Artifactory-Override-Base-Url https://artifactory.my.domain;
        include proxy.conf;
        proxy_pass http://.../artifactory/;
    }
}

server {
    listen [2a01:...]:443 http2;
    listen ...:443 http2;
    server_name ~(?<repo>.+)\.artifactory.my.domain docker.my.domain;
    include tls.conf;

    if ($repo = '') {
        set $repo docker;
    }

    location / {
        proxy_set_header X-Artifactory-Override-Base-Url https://artifactory.my.domain;
        include proxy.conf;
        proxy_pass http://.../artifactory/api/docker/$repo$request_uri;
    }
}

Где tls.conf выглядит следующим образом, чтобы получить рейтинг + на ssllabs.com:

ssl on;
ssl_certificate           /etc/letsencrypt/live/.../fullchain.pem;
ssl_certificate_key       /etc/letsencrypt/live/.../privkey.pem;
ssl_dhparam               dhparam.pem;
ssl_ecdh_curve            secp384r1;
ssl_protocols             TLSv1.2;
ssl_prefer_server_ciphers on;
#ssl_ciphers               'EECDH+ECDSA+AESGCM:!AES128';
#ssl_ciphers               'EECDH+AESGCM';

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header Public-Key-Pins 'pin-sha256="Vjs8r4z+80wjNcr1YKepWQboSIRi63WsWXhIMN+eWys="; pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg="; pin-sha256="sRHdihwgkaib1P1gxX8HFszlD+7/gTfNvuAybgLPNis="; max-age=31536000; includeSubDomains; preload';

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;


ssl_stapling on;
ssl_stapling_verify on;

А proxy.conf выглядит следующим образом:

proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cookie_path  ~*^/.* /;
proxy_read_timeout  900;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
...