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