2015-06-22 2 views
11

Как я могу запросить свои учетные данные команде docker login в сценарии?автоматический вход в докер в сценарии bash

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

Username: FATA[0000] inappropriate ioctl for device


команда, которую я использовал следующий:

(echo "xxx"; echo "yyy"; echo "zzz") | docker login docker.somesite.org 


ли это можно достичь без использования и преодоления над существующим .dockercfg файл и как,
Большое спасибо.

+0

Вы должны будете использовать ожидание/pexpect –

ответ

19

Вы можете передать все аргументы в командной строке:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST 

Если вы не укажете DOCKER_HOST, вы получите главный докер репо. Если вы не укажете какой-либо из аргументов, вам будет предложено указать этот аргумент.

(Для версий Докер старых, что 1,11, вам необходимо пройти --email флаг, но его содержимое фактически не проверено)

+0

Большое спасибо, что работал; D –

+3

Краткое обозначение может быть более удобным: 'Докер Войти -u $ DOCKER_USER -p $ DOCKER_PASS -m $ DOCKER_EMAIL $ DOCKER_HOST' – antonbormotov

+1

Это вопрос предпочтения, но когда я пишу сценарий, я предпочитаю длинные варианты, потому что он самодокументирован, и нет никакого преимущества для терпения. (В отличие от командной строки, где он сохраняет мои пальцы и избегает обертывания.) –

2

При входе в свой частный реестр, докер авто создать файл $ HOME /. docker/config.json У файла была информация Credentials, поэтому вы можете сохранить файл и скопировать на любой хост, когда хотите войти в реестр.

Содержимое файла, как это:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

Add-на Если вы хотите войти в мульти реестра Docker на одном сервере, просто добавьте еще авторизацию info.like это:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        }, 
        "example1.com":{ 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

Теперь вам можно нажать и вытащить изображения из example.com и example1.com.