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

By | 11/22/2017
 

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

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

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

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

docker pull jenkins

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

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

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

scp -i .ssh/tag-cn.pem jenkins_2_7.tar ubuntu@build.tagheuerconnected.tagheuer.cn:/home/ubuntu

Проверяем:

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

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

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

Проверяем:

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

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

docker-compose down
docker-compose up -d

Проверяем:

Готово.