Поиск по сайту:

Как поделиться образами Docker с другими


Создали образ Docker, которым хотите поделиться с коллегой? Вот как вы можете распространять образ без необходимости запускать docker build получателю самостоятельно.

Совместное использование предварительно созданного образа вместо Dockerfile позволяет вам быть уверенным, что ваш коллега использует точно такое же программное обеспечение. Повторный запуск сборки может привести к немного другой среде. У вас есть два варианта распространения изображения в зависимости от ситуации.

Используйте реестр Docker

Самый простой способ поделиться образом Docker — отправить его в реестр Docker. Эта функциональность полностью интегрирована в интерфейс командной строки Docker. При использовании этого метода вам не нужно выполнять какие-либо ручные передачи файлов.

Реестр по умолчанию — Docker Hub. Это позволяет вам публично делиться изображениями, а также дает вам один частный репозиторий. Создайте учетную запись в Docker Hub, затем запустите docker login в своем терминале. Укажите данные своей учетной записи, чтобы подключить Docker CLI к вашей учетной записи.

Затем создайте образ как обычно, используя docker build. Добавьте тег, который начинается с вашего имени пользователя Docker Hub:

docker build -t my-account/my-image:latest .

Затем используйте команду docker push, чтобы отправить образ с тегом в Docker Hub:

docker push my-account/my-image:latest

Теперь ваш образ надежно хранится в Docker Hub. Другие пользователи смогут получить его с помощью команд docker pull или docker run. Вы закончили делиться своим изображением!

Для реального использования Docker Hub может быть недостаточно. Если вы являетесь частью команды разработчиков, вы, вероятно, захотите хранить образы на своем собственном сервере, а не в общедоступном реестре Hub. Вместо этого вы можете создать собственный сервер реестра, чтобы получить частное хранилище, полностью совместимое с командами docker push и docker pull. Это позволяет вам легко обмениваться изображениями с любым, кто имеет доступ к вашему личному реестру.

Экспорт изображений

Если использование реестра невозможно, вместо этого вы можете вручную экспортировать архивы образов Docker. Эта функция также встроена в интерфейс командной строки Docker. Создайте свой образ, а затем используйте команду docker save, чтобы получить архив tar с его содержимым:

docker save my-image:latest > my-image.tar

Экспорт может занять несколько минут. Docker будет включать в себя все необходимое для воссоздания образа — это все слои в вашем Dockerfile, а также слои, унаследованные от вашего базового образа. В архиве также будет информация о тегах, связанных с изображением.

Поскольку на выходе получается простой файл tar, теперь вы можете распространять его любым удобным для вас способом. Архивы могут быть довольно большими, поэтому лучше всего загружать их на файловый сервер или в облачное хранилище.

Чтобы использовать экспортированное изображение, выполните команду docker load. Это принимает архив tar, созданный docker save, в качестве входного потока. Docker загрузит содержимое архива и добавит его в ваш список локальных образов.

docker load < my-image.tar

Теперь вы увидите только что импортированное изображение в выходных данных docker images. Вы готовы запустить новый контейнер с помощью docker run.

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

Преобразование изображений в архив tar может быть полезно для длительного хранения. Если у вас заканчивается место на сервере реестра, архивирование старых образов и загрузка их tar-файлов в хранилище файлов резервных копий может быть экономичным способом восстановить часть емкости. Вы все равно сможете восстановить образ, если вам когда-нибудь понадобится в будущем.

А как насчет «экспорта докеров»?

В Docker есть еще одна команда, связанная с экспортом, docker export. Это не следует путать с docker save. В то время как save работает с изображениями, export фактически управляет отдельными контейнерами.

docker export создаст архив tar файловой системы контейнера. Это можно использовать для восстановления реплики контейнера на другом компьютере. Если вы просмотрите содержимое архива, то увидите, что это обычная корневая файловая система Linux с такими каталогами, как /bin, /etc и /usr.

docker export my-container > my-container.tar

docker export полезен, если вы хотите сделать снимок контейнера для последующего восстановления. Однако архивы контейнеров не импортируются так, как вы могли бы ожидать. Поскольку контейнер представляет собой живую работающую среду, вы не можете «импортировать» ее напрямую. Вместо этого при импорте архива контейнера создается новый образ.

docker import my-container.tar my-image:latest

В этом примере Docker возьмет файловую систему из my-container.tar и автоматически создаст новый образ с именем my-image:latest. У него будет та же файловая система, но не тот же базовый образ или конфигурация Docker, что и у исходного контейнера, который вы экспортировали.

Краткое содержание

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

Docker также позволяет экспортировать файловую систему контейнера для последующего восстановления в образ. Будьте осторожны при использовании, так как это не точная реконструкция и не все данные файловой системы включаются. Любые тома, подключенные к исходному контейнеру, не будут включены в архив файловой системы, поэтому вам следует предпринять шаги для их резервного копирования отдельно.