Поделитесь приложением

Теперь, когда мы создали образ, давайте поделимся им! Для обмена образами Docker необходимо использовать реестр Docker. Реестром по умолчанию является Docker Hub, и именно из него были получены все образы, которые мы использовали.

Примечание

Идентификатор Docker

Docker ID позволяет вам получить доступ к Docker Hub, который является крупнейшей в мире библиотекой и сообществом для образов контейнеров. Если у вас его нет, создайте Docker ID бесплатно.

Создайте репозиторий

Чтобы распространить образ, нам сначала нужно создать репозиторий на Docker Hub.

  1. Sign up или Sign in to Docker Hub.

  2. Нажмите кнопку Создать репозиторий.

  3. Для имени репозитория используйте getting-started. Убедитесь, что параметр Visibility имеет значение Public.

    Примечание

    Частные хранилища.

    Знаете ли вы, что Docker предлагает частные репозитории, что позволяет ограничить содержимое для определенных пользователей или команд? Узнайте подробности на странице Docker pricing.

  4. Нажмите кнопку Создать!

Если вы посмотрите на образ ниже, вы увидите пример команды Docker. Эта команда выполнит push в это репозиторий.

Docker command with push example

Отправить образ

  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.

    $ 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 в левой боковой панели. Если вы ее не видите, сделайте браузер немного шире. Через несколько секунд в браузере откроется окно терминала.

    Играйте с Docker, добавляя новый экземпляр

    Играйте с Docker, добавляя новый экземпляр

  5. В терминале запустите свежезапущенное приложение.

    $ docker run -dp 3000:3000 YOUR-USER-NAME/getting-started
    

    Вы должны увидеть, как образ скачивается и в конце концов запускается!

  6. Нажмите на значок 3000, когда он появится, и вы увидите приложение с вашими изменениями! Ура! Если значок 3000 не отображается, вы можете нажать на кнопку «Открыть порт» и ввести 3000.

Следующие шаги

В этом разделе вы узнали, как делиться своими образами, размещая их в реестре. Затем вы перешли к совершенно новому экземпляру и смогли запустить только что перенесенный образ. Это довольно часто встречается в конвейерах CI, когда конвейер создать образ и отправляет его в реестр, а затем производственная среда может использовать последнюю версию образа.

Теперь можно вернуться к тому, что вы заметили в конце предыдущего раздела. Напомним, вы заметили, что при перезапуске приложения вы потеряли все элементы списка todo. Очевидно, что это не очень удобно для пользователя, поэтому далее вы узнаете, как сохранить данные после перезапуска!

Персистировать БД.