Docker. Перенос образа на другой хост.
Имеем docker контейнер который нужно перенести на другой хост. По сути наша задача сводится с переносу образа на новый хост и запуску контейнера из этого образа.
Смотрим на контейнер
user@host:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
262202e83aeb priv/container "bash" 2 hours ago Up 2 hours 80/tcp, 0.0.0.0:443->443/tcp ACME
Посмотреть какие тома присоединены к контейнеру можно в разделе «Mounts» в выводе команды:
docker inspect %ID_контейнера%
Сохранение образа. На первом месте куда сохранять, на втором что сохранять.
docker save -o /%путь%/image.tar priv/container
Копируем тома(volumes). По умолчанию лежат «/var/lib/docker/volumes/». На первом месте указываем куда копировать, на втором что:
tar -cvf ./data_vol.tar /var/lib/docker/volumes/data_vol/
Переносим образ и тома на новый хост, можно сделать при помощи «scp». Если порт SSH не стандартный, нужно его указать ключом «-P». Ключ «-P» должен быть на первом месте. Далее указываем что копировать, потом хост куда копировать в формате %имя_пользователя%@%адрес_хоста%:%путь_куда_копировать%. При указании «~» в пути файл скопируется в домашнюю папку пользователя.
scp -P 123 ./image.tar user@123.123.123.2:~
По завершении копирования тома нужно разархивировать и закинуть на место(по умолчанию «/var/lib/docker/volumes/»):
tar -xvf /home/user/data_vol.tar
Кормим докер нашим образом:
docker load -i /home/user/image.tar
После всех этих процедур докер увидит образ и позволит создать из него контейнер.