Подтвердить что ты не робот

Как узнать, подключен ли докер уже к серверу реестра докеров

Я не уверен, что я уже зарегистрировался в реестре докеров в строке cmd с помощью cmd: docker login. Как вы можете проверить или посмотреть, вошли ли вы в систему или нет, не пытаясь нажать?

4b9b3361

Ответ 1

редактировать

Вы можете войти в docker с docker login <repository>

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If 
you don't have a Docker ID, head over to https://hub.docker.com to 
create one.
Username:

Если вы уже вошли в систему, приглашение будет выглядеть так:

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If 
you don't have a Docker ID, head over to https://hub.docker.com to 
create one.
Username (myusername):

Ответ ниже устарел, docker info больше не показывает информацию о пользователе.

исторический

Когда вы вошли в систему, ваше имя пользователя и реестр отображаются в команде docker info

Как это:

[[email protected] ~]$ docker info
Containers: 12
 Running: 2
..etc...
...
Username: francobolli
Registry: https://index.docker.io/v1/

Изменить: Примечание; это работает только для index.docker.io repo. Вход только сохраняет учетные данные на диске, когда он им нужен, например, при запуске docker pull localhost:5000/image или docker pull quay.io/username/reponame.

Отредактированный после этого был отмечен в комментариях к этому вопросу: как я могу узнать, зарегистрирован ли я в приватном реестре докеров

Ответ 2

Я использую один из следующих двух способов для этой проверки:

1. Просмотр файла config.json:

Если вы вошли на "private.registry.com", вы увидите запись, аналогичную следующей в ~/.docker/config.json:

"auths": {
    "private.registry.com": {
        "auth": "gibberishgibberishgibberishgibberishgibberishgibberish"
    }
 }

2: Попробуйте еще раз войти в Docker:

Если вы пытаетесь узнать, есть ли у вас уже активный сеанс с private.registry.com, попробуйте войти снова:

bash$ docker login private.registry.com
Username (logged-in-user):

Если вы получаете вывод, подобный приведенному выше, это означает, что logged-in-user уже имел активный сеанс с private.registry.com. Если вместо этого вас попросят ввести имя пользователя, это будет означать, что активного сеанса нет.

Ответ 3

Схема учетных данных докера не удивительно проста, просто посмотрите:

cat ~\.docker\config.json

{
  "auths": {
    "dockerregistry.myregistry.com": {},
    "https://index.docker.io/v1/": {}

В Windows вы также можете использовать инструмент для ввода учетных данных, в котором также указано имя пользователя... и я думаю, что вы даже можете восстановить пароль

. "C:\Program Files\Docker\Docker\resources\bin\docker-credential-wincred.exe" list

{"https://index.docker.io/v1/":"kcd"}

Ответ 4

Для частных реестров ничего не отображается в docker info. Однако команда выхода из системы сообщит вам, что вы вошли в систему:

 $ docker logout private.example.com
 Not logged in to private.example.com

(Хотя это заставит вас снова войти в систему.)

Ответ 5

Просто проверено, сегодня это выглядит так:

$ docker login
Authenticating with existing credentials...
Login Succeeded

ПРИМЕЧАНИЕ: это на macOS с последней версией Docker CE, docker-credential-helper - как с домашним.

Ответ 6

Ответы здесь пока не так полезны:

  • docker info больше не предоставляет эту информацию
  • docker logout является серьезным неудобством - если вы уже не знаете учетные данные и можете легко перерегистрироваться
  • Ответ на docker login кажется довольно ненадежным и не так просто разобрать по программе

Мое решение, которое сработало для меня, основывается на комментарии @noobuntu: я понял, что если я уже знаю изображение, которое я хочу потянуть, но я не уверен, что пользователь уже вошел в систему, я могу сделать это:

try pulling target image
-> on failure:
   try logging in
   -> on failure: throw CannotLogInException
   -> on success:
      try pulling target image
      -> on failure: throw CannotPullImageException
      -> on success: (continue)
-> on success: (continue)

Ответ 7

В Windows вы можете проверить "авторизации" (auths) входа в систему, посмотрев этот файл: [USER_HOME_DIR].docker\config.json

Пример: c:\USERS\YOUR_USERANME.docker\config.json

Для учетных данных Windows это будет выглядеть примерно так

{
"auths": {
    "HOST_NAME_HERE": {},
    "https://index.docker.io/v1/": {}
},
"HttpHeaders": {
    "User-Agent": "Docker-Client/18.09.0 (windows)"
},
"credsStore": "wincred",
"stackOrchestrator": "swarm"
}

Ответ 8

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

docker system info | grep -E 'Username|Registry'

Ответ 9

По крайней мере, в "Докере для Windows" вы можете увидеть, вошли ли вы в концентратор докеры через интерфейс. Просто щелкните правой кнопкой мыши значок докеры в области уведомлений Windows: Docker Logged in

Ответ 10

Используйте команду, как показано ниже:

docker info | grep 'name'

WARNING: No swap limit support
Username: <strong>jonasm2009</strong>

Ответ 11

Как отметил @Christian, лучше всего сначала попробовать операцию, а затем войти только в случае необходимости. Проблема в том, что "если необходимо" не так очевидно, чтобы делать это надежно. Один из подходов состоит в том, чтобы сравнить stderr операции докера с некоторыми известными строками (методом проб и ошибок). Например,

try "docker OPERATION"
if it failed: 
    capture the stderr of "docker OPERATION"
    if it ends with "no basic auth credentials": 
        try docker login
    else if it ends with "not found":
        fatal error: image name/tag probably incorrect
    else if it ends with <other stuff you care to trap>:
        ...
    else:
        fatal error: unknown cause

try docker OPERATION again
if this fails: you're SOL!

Ответ 12

Если вам нужно простое значение true/false, вы можете docker.json свой docker.json в jq.

is_logged_in() {
  cat ~/.docker/config.json | jq -r --arg url "${REPOSITORY_URL}" '.auths | has($url)'
}

if [[ "$(is_logged_in)" == "false" ]]; then
  # do stuff, log in
fi

Ответ 13

Если вы уже вошли в реестр Docker, просто используйте

enter image description here

Вы увидите ответ.