Образ в облаке: DockerHub
DockerHub — облачный репозиторий docker-образов. Вы уже подключались к этому сервису: ваш Docker скачивал оттуда готовые образы сначала для тестирования (образ hello-world), а потом и для практической работы (базовый слой для образа Yatube был взят именно с DockerHub).
На DockerHub удобно хранить и собственные образы.
После регистрации обязательно верифицируйте свой почтовый адрес, без этого вы не сможете загрузить образ на DockerHub.
Зайдите на вкладку Repositories:
Здесь пока пусто, но у вас уже есть, чем наполнить этот раздел.
Имя загружаемого на DockerHub образа должно выглядеть так: username/imagename:tag.
username — ваше имя пользователя на DockerHub.
imagename — произвольное имя образа. Оно имеет ограничение в 128 символов и не может начинаться с точки или тире.
tag — необязательная, но очень полезная часть имени. Применение тегов даёт возможность загружать в облако различные версии одного и того же образа. Например, на DockerHub существует пользователь billglasses, его репозиторий может выглядеть так:
billglasses/gates:v1.1985
billglasses/gates:v2.1987
billglasses/gates:v2.11.1989
billglasses/gates:v3.1990
При обращении к образу можно указывать тег: docker pull billglasses/gates:v2.11.1989 . Если вы не укажете тег, то он будет billglasses/gates:latest и установится последняя версия этого образа.
Загрузка образа на DockerHub
Например, пользователь billglasses решил загрузить в репозиторий определённую версию образа gates.
Для этого он должен:
Локально создать образ с нужным названием и тегом:
Скопировать кодBASH
docker build -t billglasses/gates:v2.11.1989 .
Авторизоваться через консоль:
Скопировать кодBASH
docker login
# а можно сразу указать имя пользователя
docker login -u billglasses
В GitBash на Windows команда docker login может не сработать. Тогда поможет команда winpty docker login.
Загрузить образ на DockerHub:
Скопировать кодBASH
docker push billglasses/gates:v2.11.1989
Загрузите образ с проектом Yamdb в свой репозиторий на DockerHub. Проследите, чтобы его имя соответствовало правилам DockerHub, иначе загрузить образ не удастся.
Можно собрать новый образ с необходимым для загрузки именем. А можно создать копию существующего образа и дать ей нужное имя; это делается командой tag:
Скопировать кодDOCKER
# billglasses создаёт копию образа door
# и присваивает новому образу имя billglasses/gates:v1.1985
docker tag door billgates/gates:v1.1985
# ...и удаляет образ door, чтобы не запутаться в версиях и копиях
docker rmi door
Создайте образ с нужным именем, залогиньтесь через консоль и загрузите образ на DockerHub.
Зайдите на DockerHub через браузер:
Образ появится в DockerHub Registry и будет доступен для загрузки.
Если требуется изменить образ — нужно локально внести изменения в докерфайл, пересобрать образ и выполнить команду docker push <imagename>: образ обновится на DockerHub.
А для того, чтобы обновить образ, который лежит на сервере — обновите образ на DockerHub и выполните на сервере команду docker pull <imagename>. Образ скачается на сервер, останется только запустить контейнер.
Полезное на DockerHub
По умолчанию ваши образы на DockerHub открыты и доступны любому пользователю, но можно создать и приватный репозиторий.
Можно связать ваш аккаунт на DockerHub с аккаунтом GitHub и настроить автоматическую сборку образа при изменении Dockerfile в репозитории на GitHub.