DevGang
Авторизоваться

Как перенести / переместить образ Docker в другую систему?

В идеальном случае передача изображений Docker осуществляется через реестр Docker или через полностью управляемого поставщика, такого как AWS ECR или Google GCR. Вы можете легко загрузить изображение с помощью команды docker push , а другие могут получить изображение с помощью команды docker pull .

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

Docker поддерживает два разных типа методов для сохранения изображений контейнера в один архив.

  1. Docker save - Save используется для сохранения изображения (не контейнера)
  2. Docker export - Export используется для сохранения контейнера (не изображения)

Использование Docker Save Command:

Сохранение изображения Docker:

Во-первых, мы будем придерживаться плана, который сохраняет только изображение. Теперь пройдемся по команде docker save . Предположим, вам нужен образ Python с Alpine, который можно извлечь из Docker Hub:

$ docker pull python:2.7.17-alpine3.9
2.7.17-alpine3.9: Pulling from library/python
e7c96db7181b: Already exists
1819f4b92bc2: Already exists
8061b3761cb3: Pull complete
73aebae115de: Pull complete
Digest: sha256:5f6059d78f530c3c59c4842e104ddcfc772a27fb8fac0d900f4d77bcb4621d9b
Status: Downloaded newer image for python:2.7.17-alpine3.9
docker.io/library/python:2.7.17-alpine3.9

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

$ docker save python:2.7.17-alpine3.9 > /path/to/save/my-python-container.tar

  Просто убедитесь, что вы используете точное имя изображения и тег при создании tar. В нашем случае так и было python:2.7.17-alpine3.9 . Вы можете проверить, сработала ли вышеуказанная команда:  

$ du -h my-python-container.tar 
75M my-python-container.tar

Теперь вы можете отправить файл .tar другому лицу через rsync , scp или аналогичный протокол передачи файлов в соответствии с вашими предпочтениями.

Загрузка изображения докера:

Как только на целевой машине будет файл .tar , вы можете загрузить образ в локальный реестр, используя команду docker load :

$ docker load < my-python-container.tar

  Теперь проверьте, есть ли у вас это изображение на целевом компьютере, с помощью docker images или docker image list . Конечный результат будет примерно таким:  

$ docker image list
REPOSITORY   TAG               IMAGE ID       CREATED              SIZE
python       2.7.17-alpine3.9  3f0e580ded94   2 hours ago          74.9MB

Использование команды экспорта Docker:

Экспорт Docker-контейнера:

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

Посмотрев на метод docker export , сначала мы потянем альпийское изображение:

$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
e6b0cf9c0882: Pull complete
Digest: sha256:2171658620155679240babee0a7714f6509fae66898db422ad803b951257db78
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

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

$ docker run -it --detach --name alpine-t alpine

  Чтобы получить идентификатор контейнера и имя, которое мы создали, мы можем использовать команду docker ps . На всякий случай, если на вашей машине контейнер был остановлен по какой-либо причине, вы все равно можете получить идентификатор и имя, используя docker ps -a :  

$ docker ps
CONTAINER ID  IMAGE  COMMAND   CREATED         STATUS        PORTS    NAMES
35f34fabfa84  alpine "/bin/sh" 14 seconds ago  8 seconds ago           alpine-t

  Как мы видим, наш идентификатор контейнера 35f34fabfa84 (он будет другим для вас), или вы также можете использовать имя контейнера; в нашем случае это alpine-t . Теперь мы можем запустить команду docker export для экспорта изображения экземпляра:  

$ docker export 35f34fabfa84 > alpine-t.tar

Кроме того, вы также можете использовать OPTIONS, чтобы сделать то же самое, и ваш файл .tar будет готов для передачи.

$ docker export --output="alpine-t.tar" 35f34fabfa84

Импорт Docker-контейнера:

Теперь вы можете импортировать файл .tar на целевой компьютер, используя импорт докера:

$ sudo tar -c alpine-t.tar | docker import - alpine-t

  Чтобы проверить, вы можете запустить контейнер с помощью --rm (он уничтожит контейнер, как только вы его выполните):  

$ docker run --rm -it --name alpine-test alpine-t:[TAG]

Источник:

#Docker
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить