Простое приложение с 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 мог его запустить.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Нормальные формы, пример нормализации в базе данных

Хэш-таблица: разрешение коллизий