Docker: save и load – скопировать образ между хостами

Автор: | 22/11/2017

Имеется Docker контейнер с Jenkins на EC2 в Китае, необходимо обновить версию Jenkins.

Что бы не тянуть весь образ напрямую в Китай (скорость иногда падала до 3-4 кб/с) – можно скачать его на рабочую машину в Киеве, а потом скопировать архив в Китай с помощью scp.

Используем docker save для создания архива с образом и docker load – для его загрузки в хранилище Docker на хосте в Китае.

Загружаем образ к себе:

[simterm]

$ docker pull jenkins

[/simterm]

Создаём архив с содержимым образа:

[simterm]

$ docker save -o /home/setevoy/jenkins_2_7.tar jenkins

[/simterm]

Копируем его на EC2 в Китай:

[simterm]

$ scp -i .ssh/tag-cn.pem jenkins_2_7.tar [email protected]:/home/ubuntu

[/simterm]

Проверяем:

[simterm]

root@ip-10-0-0-235:~# ls -lh jenkins_2_7.tar 
-rw------- 1 ubuntu ubuntu 795M Nov 21 14:41 jenkins_2_7.tar

[/simterm]

И импортируем образ:

[simterm]

root@ip-10-0-0-235:~# docker load -i jenkins_2_7.tar 
a75caa09eb1f: Loading layer [==================================================>]    105MB/105MB
...
252403d25a1f: Loading layer [==================================================>]  10.75kB/10.75kB
The image jenkins:latest already exists, renaming the old one with ID sha256:df5bba7c222b6afb99907c184b127ac575854d288384369713f42d1db7238550 to empty string
Loaded image: jenkins:latest

[/simterm]

Проверяем:

[simterm]

root@ip-10-0-0-235:~# docker images | grep jenkins
jenkins                                                                  latest                                   3f08dc4f3f5d        2 weeks ago         809MB

[/simterm]

Перезапускаем Jenkins стек:

[simterm]

# docker-compose down
# docker-compose up -d

[/simterm]

Проверяем:

Готово.