Как перемещать контейнеры 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/


что в конечном итоге сработало для меня, после того, как много запутанных руководств и запутанных учебников, так как Докер, очевидно, во время моего написания в - пик завышенных ожиданий, является:

  1. Сохранить Изображение docker в архив:
    docker save image_name > image_name.tar
  2. скопировать на другую машину
  3. на другой машине docker запустите загрузку docker следующим образом:
    cat image_name.tar | docker load

экспорт и импорт, как предложено в других ответах не экспортирует порты и переменные, которые могут потребоваться для запуска контейнера. И вы можете закончить с такими вещами, как "команда не указана" etc... Когда вы пытаетесь загрузить его на другую машину.

таким образом, разница между save и export заключается в том, что команда save сохраняет весь образ с историей и метаданными, а команда export экспортирует только структуру файлов (без истории или метаданных).