Для того чтобы загрузить свой образ в репозиторий необходимо иметь логин и пароль на репозиторий. В этой статье я буду рассматривать Docker Hub в качестве репозитория. Первым делом необходимо зарегистрироваться на сайте Docker Hub.
После регистрации необходимо залогиниться на Docker Hub со своего устройства, используя docker login.
docker login
Username: jadqvmirmitclcmwwm
Password:
Login Succeeded
Выполняя команду выше, я не указывал web-адрес репозитория, потому что по умолчанию используется Docker Hub. Если вдруг нужно залогиниться на другом репозитории к самой команде добавляем url репозитория, например, docker login registry.example.com.
После удачной авторизации в системе создаётся файл с вашим логином и токеном для доступа к репозиторию.
sudo cat /home/admin/.docker/config.json
"auths": {
"https://index.docker.io/v1/": {
"auth": "amFkcXZtaXJtaXRjbGNtd3dtOmphZHbUBrdmhydy5jb20="
}
}
Поэтому после того как вы выполнили загрузки образа в репозиторий лучше выполнить docker logout.
Одинаковый NAMESPACE
В этой статье я расписывал как происходит наименование образов в Docker. И очень важно знать, что образ, который вы собираетесь отправить в репозиторий должен иметь такой же NAMESPACE, как и ваше имя пользователя в репозитории. Но это не всегда так, некоторые репозитории не привязаны к этому, но Docker Hub требует именно этого.
docker image ls
ynwasg/build12 1.2 d2a2ec50e235 14 hours ago 124MB
docker push ynwasg/build12
The push refers to repository [docker.io/ynwasg/build12]
tag does not exist: ynwasg/build12:latest
Теперь же я добавлю новый тэг для этого образа и NAMESPACE задам такой же как имя моего пользователя на Docker Hub, после чего попробую еще раз сделать docker push.
docker image tag ynwasg/build12:1.2 jadqvmirmitclcmwwm/build12:1.1
docker image ls
jadqvmirmitclcmwwm/build12 1.1 d2a2ec50e235 15 hours ago 124MB
docker push jadqvmirmitclcmwwm/build12:1.1
The push refers to repository [docker.io/jadqvmirmitclcmwwm/build12]
5b7bc18f2b9b: Pushed
755f21c870f5: Pushed
235e81929876: Mounted from library/python
9ba402f61141: Mounted from library/python
15eb6aec49b3: Mounted from library/python
d7c97cb6f1fe: Mounted from library/python
1.1: digest: sha256:c768e2220b5b0f8e11ab4934577d192776c7e3728e5824b31c06e5cf2bd1979d size: 1573
Теперь, когда имя моего пользователя на Docker Hub и NAMESPACE образа совпадают образ удачно загрузился в репозиторий.
Как работает docker push
При вызове команды docker push происходит следующее:
- Проверка залогинен ли пользователь в репозитории
- Проверка существующих слоёв в репозитории
- Отправка только новых слоёв в репозиторий
- Добавление или обновление тэга образа


Комментарии