2015-03-29 7 views
1

Я вижу, что у ~/.dockercfg есть ваши учетные данные, но это ваш адрес электронной почты, а не ваше имя пользователя. Я вижу, что при запуске docker login отображается ваше имя пользователя и предлагается его изменить. Но вы можете просто ввести свое имя пользователя в сценарий сборки?Есть ли способ получить имя пользователя Docker Hub текущего пользователя?

+0

Я не вижу ничего полезного в документах API. https://docs.docker.com/reference/api/docker-io_api/#user-login –

ответ

5

Отображение имени пользователя с:

docker info | sed '/Username:/!d;s/.* //' 

хранить его в переменной с:

username=$(docker info | sed '/Username:/!d;s/.* //'); 
echo $username 

Обратите внимание, что если у вас есть Баш history expansion (set +H) вы будете не в состоянии поставить двойные кавычки command substitution (например, "$(cmd...)", потому что ! заменяется на вашу последнюю команду. Escaping очень сложный с этими вложенными расширениями и использование его без кавычек, как показано выше, более читаемо и работает.

+0

Я дам вам выбранный ответ для предпочтительного использования 'docker info', но я удалил ваше бесполезное использование grep. (Никогда не комбинируйте процесс grep с другим, который способен фильтровать регулярные выражения.) Http://porkmail.org/era/unix/award.html#grep –

+1

Не работает на macOS - после входа в систему нет имени пользователя – Andrei

0

Это работает, чтобы извлечь его, но технически это состояние гонки.

username="$(sed 's/.*(//;s/).*//' <(docker login & sleep 1; kill %1))" 

Наверняка есть что-то лучше.

Смежные вопросы