Теперь, когда мы создали образ, давайте поделимся им! Чтобы поделиться изображениями Docker, вы должны использовать реестр Docker. Реестр по умолчанию – Docker Hub
, и именно оттуда взяты все изображения, которые мы использовали.
Docker ID
Docker ID позволяет вам получить доступ к Docker Hub, который является крупнейшей в мире библиотекой и сообществом изображений контейнеров. Создайте Docker ID бесплатно, если у вас его нет.
Чтобы опубликовать изображеие, нужно сначала создать репозиторий в Docker Hub
1. Зайдите в свой аккаунт на Docker Hub (или зарегистрируйтесь, если аккаунта ещё нет).
2. Нажмите кнопку Create Repository
3. Для имени репозитория используйте getting-started
. Убедитесь, что видимость установлена как Public
.
Private repositories
Знаете ли вы, что Docker предлагает частные репозитории, которые позволяют вам ограничивать контент конкретными пользователями или командами? Ознакомьтесь с подробной информацией на странице Docker pricing.
4. Нажмите кнопку Create!
Если вы посмотрите на изображение ниже, можно увидеть пример команды Docker. Эта команда приведет к переходу к этому отчету.
1. В командной строке попробуйте выполнить команду push
, которую вы видите в Docker Hub. Обратите внимание, что ваша команда будет использовать ваше пространство имен, а не “docker”.
docker push docker/getting-started
The push refers to repository [docker.io/docker/getting-started]
An image does not exist locally with the tag: docker/getting-started
Почему не получилось? Команда push
искала изображение с именем docker/getting-started
, но не нашла его. Если вы запустите docker image ls
, вы тоже его не увидите.
Чтобы это исправить, нам поставить метку на созданное изображение, чтобы дать ему другое имя.
2. Войдите в Docker Hub, используя команду docker login -u YOUR-USER-NAME
.
3. Используйте команду docker tag
, чтобы изображению getting-started
новое имя. Обязательно замените YOUR-USER-NAME
на ваш Docker ID.
docker tag getting-started YOUR-USER-NAME/getting-started
Узнайте больше о команде docker tag
.
4. Теперь попробуйте свою команду push
еще раз. Если вы копируете значение из Docker Hub, вы можете удалить часть tagname
, так как мы не добавляли тег к имени изображения. Если вы не укажете тег, Docker будет использовать тег с именем latest
.
docker push YOUR-USER-NAME/getting-started
Теперь, когда наш образ создан и помещен в реестр, давайте попробуем запустить наше приложение на совершенно новом экземпляре, который никогда не видел этот образ контейнера! Для этого мы будем использовать Play with Docker.
1. В браузере откройте Play with Docker.
2. Нажмите Login, а затем из выпадающего списка выберите docker.
3. Подключитесь к своей учетной записи Docker Hub.
4. Как только вы войдете в систему, нажмите на опцию ADD NEW INSTANCE на левой боковой панели. Если вы этого не видите, сделайте свой браузер немного шире. Через несколько секунд в вашем браузере откроется окно терминала.
5. В терминале запустите только что опубликованное приложение.
docker run -dp 3000:3000 YOUR-USER-NAME/getting-started
Вы должны увидеть, как изображение скачивается и в конечном итоге запускается!
6. Нажмите на значок 3000, когда он появится, и вы увидите приложение с вашими изменениями! Ура! Если значок 3000 не отображается, вы можете нажать на кнопку Open Port и ввести 3000.
В этом разделе вы узнали, как поделиться своими изображениями, поместив их в реестр. Затем вы перешли к совершенно новому экземпляру и смогли запустить только что загруженный образ. Это довольно распространено в конвейерах CI, где конвейер создает образ и помещает его в реестр, а затем производственная среда может использовать последнюю версию образа.
Теперь вы можете вернуться к тому, что вы заметили в конце предыдущего раздела. Напоминаю, вы заметили, что при перезапуске приложения вы потеряли все элементы списка дел. Очевидно, что это не очень удобно для пользователя, поэтому далее вы узнаете, как можно сохранять данные при перезапусках!