'docker pull' возвращает ' denied: access forbidden` из частного реестра gitlab

у меня есть Dockerfile который будет реализован FROM образ частного реестра. Я создаю этот файл без каких-либо проблем с Docker version 1.12.6, build 78d1802 и docker-compose version 1.8.0, build unknown, но в другую машину Docker version 17.06.1-ce, build 874a737 и docker-compose version 1.16.1, build 6d1ac21 на docker-compose build возвращает:

FROM my.private.gitlab.registry:port/image:tag
http://my.private.gitlab.registry:port/v2/docker/image/manifests/tag: denied: access forbidden

docker pull my.private.gitlab.registry:port/image:tag возвращает то же самое.

обратите внимание, что я пытался получить my.private.registry:port/image:tag и http://my.private.registry:port/v2/docker/image/manifests/tag был пойман.

2 ответов


Если это аутентифицированный реестр, то вам нужно запустить docker login <regitsryurl> на машине, где вы строите это.

это нужно сделать только один раз на хост. Затем команда кэширует auth в файле

$ cat ~/.docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "......="
        }
    }
}

Я заметил, что ваша схема URL использует протокол http-Docker необходимо настроить, чтобы разрешить небезопасные реестры.

создайте или измените свой daemon.json (обязательно в одном из следующих мест):

Linux:/etc/docker/

Windows:C:\ProgramData\Docker\config\

содержание:

{
    "insecure-registries" : [ "my.private.gitlab.registry:port" ]
}

затем перезапустите Docker (а не только сеанс терминала) и повторите попытку.

после того как вы вошли в систему с:

docker login my.private.gitlab.registry:port

согласно Тарун-Лалваниответ, это должно затем добавить аутентификацию в конфигурацию для будущего использования (docker pull's etc.).