Проблема с получением изображения из приватного хаба

У меня следующая проблема: я пытаюсь извлечь построенный образ докера из частного концентратора и запустить его как службу, но появляется следующая ошибка.

Failed to launch container: Failed to run 'docker -H unix:///var/run/docker.sock pull r.cfcr.io/path/to/repo/': exited with status 1; stderr='Error: Cannot perform an interactive login from a non TTY device '

вот информация fetch[] config.json, которую я использую для аутентификации:

{
    "auths": {
        "r.cfcr.io": {
            "auth": "=auth_token="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/18.06.1-ce (linux)"
    }
}

У вас есть идеи, как решить проблему?


person cyber534    schedule 23.04.2019    source источник
comment
Какую команду вы используете для извлечения изображения?   -  person Charles Xu    schedule 23.04.2019
comment
Он работает, когда я пытаюсь вытащить его через командную строку, но он не работает через интерфейс Mesosphere.   -  person cyber534    schedule 23.04.2019
comment
Что вы имеете в виду, чтобы запустить его как службу?   -  person Charles Xu    schedule 23.04.2019
comment
Пользовательский интерфейс Mesosphere -> Запуск службы -> Multi-container Pod. Это терпит неудачу, когда я пытаюсь построить его таким образом   -  person cyber534    schedule 23.04.2019
comment
Ошибка показывает, что не удается выполнить интерактивный вход с устройства, отличного от TTY.   -  person Charles Xu    schedule 23.04.2019
comment
Да, поэтому мне интересно, в чем может быть проблема - это работает, когда я аутентифицируюсь и загружаю изображение через командную строку, но когда я пытаюсь сделать это через интерфейс Mesosphere, ошибка выше появляется каждый раз.   -  person cyber534    schedule 23.04.2019


Ответы (2)


Вероятно, это не связано с проблемой здесь, но некоторые люди могут столкнуться с точно таким же сообщением при попытке входа в Docker с терминала, подобного Linux, в Windows, такого как Git bash или терминал быстрого запуска Docker или даже Cygwin.

Хитрость здесь в том, чтобы использовать winpty docker login

или попробуйте использовать эту команду

docker login "${URL}" -u "${Username}" -p "${PASSWORD}"
person Kirti Azad    schedule 23.04.2019
comment
Проблема в том, что он работает, когда я аутентифицируюсь через командную строку. Соответственно - могу без проблем вытащить образ и собрать. Он не работает через интерфейс Mesosphere. - person cyber534; 23.04.2019

Вы должны хранить файл config.json в каталоге .docker в $MESOS_SANDBOX. Итак, создайте архив каталога .docker со списком файлов ниже:

$ tar tvf docker-login.tar                                                                                      
drwx------ parvez/parvez     0 2019-06-12 21:45 .docker/
-rw------- parvez/parvez   177 2019-06-12 21:45 .docker/config.json

Получите и извлеките этот архив из конфигурации mesos.

"fetch": [{ 
              "uri": "https://foo.com/docker-login.tar", 
              "executable": false,
              "extract": true, 
              "cache": true 
          }],

Он загрузит и извлечет архив по пути $MESOS_SANDBOX, и docker pull должен быть успешным.

person Parvez Kazi    schedule 12.06.2019