Docker Hub — это публичный репозиторий, куда вы можете загружать свои образы (images) для совместной работы с командой, заказчиками или другими пользователями.
Для создания репозитория вам нужно зарегистрироваться в Docker Hub и нажать кнопку «Create Repository»
:
Вы можете создать репозиторий, используя свой Docker ID. Имя репозитория должно быть уникальным, длиной до 255 символов и состоять из символов нижнего регистра, цифр и символов -
или _
. Описание может быть длиной до 100 символов и использоваться для поиска.
Также вы можете связать репозиторий с вашим аккаунтом на GitHub или Bitbucket.
После создания репозитория вы получите полный доступ к его свойствам и настройкам.
Для загрузки своего образа в созданный репозиторий, вам нужно выполнить команду docker login
, указав свой логин и пароль:
После чего вы получите следующий вывод:
Поздравляю, вы связали свой компьютер с аккаунтом на Docker Hub и получили возможность загружать туда свои образы.
Вы можете загружать несколько образов в один репозиторий, используя теги. Таким образом, вы сможете хранить разные версии своего приложения на Docker Hub, запуская его на любой машине, где установлен Docker.
Следующий шаг — это создание самого образа, который мы будем загружать на Docker Hub. В этом нам поможет Dockerfile — это файл с инструкциями для создания образов в Docker. В качестве примера я возьму образ Tomcat (веб-сервер для Java-приложений). Для этого пишем в строке поиска tomcat
:
Затем выбираем tomcat
из категории Verified Content (это означает, что эти образы официальные и одобрены модераторами Docker Hub), кликаем по первой записи и попадаем в репозиторий образа tomcat:
Дальше переходим во вкладку Tags
и выбираем нужный нам образ и архитектуру. В моем случае, это linux/amd64
:
В строке Image History
мы увидим последовательность команд, нужных для создания этого образа (это можете использовать в качестве шпаргалки):
Теперь давайте создадим свой собственный образ с помощью Dockerfile, который базируется на образе Alpine (это самый легковесный Linux-дистрибутив, который часто используется для создания образов). Для этого создадим файл с названием Dockerfile
, используя следующую команду:
touch Dockerfile
Теперь проверим, есть ли этот файл в директории:
ls
Затем откройте файл любым удобным вам редактором. Поскольку я использую Vim, то моей командой будет vim Dockerfile
. Затем нам нужно перейти в режим редактирования нажатием клавиш I
или Insert
:
Напишем следующий текст:
Для сохранения файла используется комбинация :wq
(w
— write и q
— quit).
Наш первый Dockerfile готов:
команда from
указывает, какой образ мы хотим взять за основу;
команда run
выполняет команду внутри контейнера, созданного с помощью этого образа, а именно: запускает пакетный менеджер Alpine под названием apk
и устанавливает программу curl (используется для передачи файлов по сети);
с помощью команды entrypoint
мы посмотрим какую версию curl мы установили.
Теперь самое время создать образ из этого Dockerfile:
docker build -t <название пользователя>/<название образа>:[тег] <путь к Dockerfile>
Смотрим, есть ли наш образ в списке локальных образов:
docker images
На скрине, приведенном выше, мы видим, что наш образ присутствует. Дальше нам нужно запушить образ в Docker Hub следующей командой:
docker push <название пользователя>/<название образа>:[тег]
Проверяем наш репозиторий:
Как вы можете видеть, наш образ уже загружен на Docker Hub, и мы можем его скачать, используя команду docker pull
.
Добрый День, спасибо за урок.
Думаю процесс логина нужно подробнее освятить?
Если я делаю как у вас, просто команду docker login, то мне ответ приходит «Authenticating with existing credentials… Login Succeeded».
Без предложения ввести логин и скриншот, как на вашем примере.
Я ничего не подозревая, проследовал по шагам, но потом не смог запушить. Выдавало такую ошибку: «denied: requested access to the resource is denied».
Как залогинится и связать я так и не понял.
У меня запущен десктопное приложение Docker, и командная строка в Cmder откуда и ввожу все вышеуказанные команды.
Попробуйте с командой sudo.
sudo docker push
Очень полезную тему взяли!!!!!