Простое приложение с Docker: публикация образа
Чтобы продемонстрировать переносимость приложения в контейнере, которое мы создали в предыдущих постах, давайте загрузим наш собранный образ и запустим его где-нибудь еще. В конце концов, чтобы развертывать контейнеры в производственной среде, необходимо уметь передавать образы в реестры.
Реестр (registry) - это набор репозиториев, а репозиторий - это набор образов, вроде репозитория GitHub, за исключением того, что код уже собран (пройден build этап). Учетная запись в реестре может создавать множество репозиториев. Интерфейс командной строки docker по умолчанию использует общедоступный реестр Docker.
Примечание. Здесь мы используем общедоступный реестр Docker только потому, что он бесплатный и предварительно настроен, но есть из чего выбирать, и вы даже можете создать свой личный реестр с помощью Docker Trusted Registry.
Войдите с вашим Docker ID
Если у вас нет учетной записи Docker, зарегистрируйтесь на hub.docker.com. Запишите ваше имя пользователя.
Войдите в публичный реестр Docker на своем локальном компьютере.
$ docker login
Навесить тег образу
Для связывания локального образа с репозиторием в реестре используется запись username/repository:tag. Тег необязателен, но рекомендуется, поскольку это механизм, который реестры используют для предоставления образам Docker версий. Задайте репозиторию и тегу значимые имена для контекста, такие как get-started:part2. Это помещает образ в репозиторий get-started и помечает его (навешивает тег) part2.
Теперь соберите все вместе, чтобы задать тег образу. Выполните docker tag image с вашим именем пользователя, репозиторием и именами тега, чтобы образ загрузился в желаемое место назначения. Синтаксис команды:
docker tag image username/repository:tag
Например:
docker tag friendlyhello gordon/get-started:part2
Запустите docker image ls, чтобы увидеть ваше недавно помеченное изображение.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
friendlyhello latest d9e555c53008 3 minutes ago 195MB
gordon/get-started part2 d9e555c53008 3 minutes ago 195MB
python 2.7-slim 1c7128a655f6 5 days ago 183MB
...
Опубликовать образ
Загрузите образ с тегом в репозиторий:
docker push username/repository:tag
После завершения результаты этой загрузки становятся общедоступными. Если вы войдете в Docker Hub, вы увидите там новое изображение с его командой pull.
Загрузите и запустите образ из удаленного репозитория
Отныне вы можете использовать docker run и запускать ваше приложение на любом компьютере с помощью этой команды:
docker run -p 4000:80 username/repository:tag
Если образ не доступен локально на машине, Docker извлекает его из хранилища.
$ docker run -p 4000:80 gordon/get-started:part2
Unable to find image 'gordon/get-started:part2' locally
part2: Pulling from gordon/get-started
10a267c67f42: Already exists
f68a39a6a5e4: Already exists
9beaffc0cf19: Already exists
3c1fe835fb6b: Already exists
4c9f1fa8fcb8: Already exists
ee7d8f576a14: Already exists
fbccdcced46e: Already exists
Digest: sha256:0601c866aab2adcc6498200efd0f754037e909e5fd42069adeff72d1e2439068
Status: Downloaded newer image for gordon/get-started:part2
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
Независимо от того, где выполняется docker run, он извлекает ваш образ вместе с Python и всеми зависимостями из requirements.txt и запускает ваш код. Все это идет вместе в аккуратном небольшом пакете, и вам не нужно ничего устанавливать на хост-компьютере, чтобы Docker мог его запустить.
Читайте также:
- Подготовка вашего Docker окружения
- Простое приложение с Docker: определение контейнера с помощью Dockerfile
- Простое приложение с Docker: сборка и запуск приложения в контейнере
Комментарии
Отправить комментарий