Как перемещать контейнеры docker между разными хостами


Я не могу найти способ перемещения докера, выполняющего контейнеры с одного хоста на другой.

есть ли способ, которым я могу подтолкнуть свои контейнеры к репозиториям, как мы это делаем для изображений ? В настоящее время я не использую тома данных для хранения данных, связанных с приложениями, запущенными внутри контейнеров. Поэтому некоторые данные находятся внутри контейнеров, которые я хочу сохранить перед перепроектированием установки.

любая помощь приветствуется.

4 61

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, очевидно, находится во время моего написания в - пик завышенных ожиданий, является:

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

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