Как перемещать контейнеры docker между разными хостами
Я не могу найти способ перемещения докера с контейнерами с одного хоста на другой.
есть ли способ, которым я могу подтолкнуть мои контейнеры к репозиториям, как мы делаем это для изображений ? В настоящее время я не использую тома данных для хранения данных, связанных с приложениями, запущенными внутри контейнеров. Поэтому некоторые данные находятся внутри контейнеров, которые я хочу сохранить, прежде чем перепроектировать настройку.
любая помощь приветствуется.
4 ответов
вы не можете переместить работающий контейнер docker с одного хоста на другой.
вы можете зафиксировать изменения в вашем контейнере к изображению с docker commit
, переместите изображение на новый хост, а затем запустите новый контейнер с docker run
. Это сохранит все данные, созданные приложением внутри контейнера.
альтернативно, если вы не хотите нажимать на репозиторий:
1) экспорт контейнера в tarball
docker export <CONTAINER ID> > /home/export.tar
2) переместите свой tarball на новую машину
3) импортируйте его обратно
cat /home/export.tar | docker import - some-name:latest
из документации Docker:
docker export
не экспортирует содержимое связанных томов с контейнером. Если том установлен поверх существующего каталог в контейнере,docker export
экспортировать содержимое из базовый каталог, а не содержимое тома. Относиться к резервное копирование, восстановление и перенос данных Тома в руководстве пользователя для примеров экспорта данных в объем.
другие внешние инструменты: Для перемещения контейнера со связанным с ним Томом данных можно использовать Flocker https://clusterhq.com/flocker/introduction/
что в конечном итоге сработало для меня, после того, как много запутанных руководств и запутанных учебников, так как Докер, очевидно, во время моего написания в - пик завышенных ожиданий, является:
- Сохранить Изображение docker в архив:
docker save image_name > image_name.tar
- скопировать на другую машину
- на другой машине docker запустите загрузку docker следующим образом:
cat image_name.tar | docker load
экспорт и импорт, как предложено в других ответах не экспортирует порты и переменные, которые могут потребоваться для запуска контейнера. И вы можете закончить с такими вещами, как "команда не указана" etc... Когда вы пытаетесь загрузить его на другую машину.
таким образом, разница между save и export заключается в том, что команда save сохраняет весь образ с историей и метаданными, а команда export экспортирует только структуру файлов (без истории или метаданных).