Как упаковать и перенести образы Docker с одного сервера на другой
Если вы создали образ Docker на своем компьютере для разработки и хотите развернуть его на сервере, вы можете использовать реестр Docker, но в Docker также есть инструменты для сохранения образов в файлы и их загрузки на другой сервер.
Вам не нужен реестр контейнеров
Обычно для передачи сборки контейнера (называемой образом) на удаленный сервер используется реестр контейнеров Docker. Это, безусловно, лучший метод — это единая точка полномочий, позволяющая легко распространять обновления по нескольким серверам. Это также не требует, чтобы вы делали контейнер общедоступным; существует множество отличных реестров частных контейнеров, таких как GCR от Google и ECS от AWS. Docker Hub даже поддерживает частные репозитории. Если вы просто беспокоитесь о конфиденциальности, переключитесь на частный реестр и продолжайте использовать docker push
и docker pull
.
Однако для тех, кто хочет сделать это по старинке, интерфейс командной строки Docker содержит некоторые инструменты для сохранения изображений в файлы и их загрузки на удаленный сервер.
Чтобы сохранить изображение, вы можете использовать docker save
, указав выходной файл, а затем указать имя и тег изображения:
docker save -o ./savedimage imagename:tag
Если вы не укажете тег, Docker упакует все теги.
Это сериализует и сохранит копию изображения в выходном файле. Образ хранится в виде tar-файла. Если вы хотите сохранить его как tar.gz
, вы можете опустить флаг -o
и направить вывод в gzip
:
docker save imagename:tag | gzip > savedimage.tar.gz
Затем вы можете взять этот файл и scp
или скопировать его по FTP на целевой сервер. После этого вы можете снова импортировать его с помощью docker load
:
docker load -i savedimage
Это сделает образ доступным в целевой системе, как если бы вы запустили docker build . -t имя_изображения
. Вы можете использовать его так же, как локально собранный образ с docker container run
:
docker container run imagename