ГлавнаяОперационные системыLinuxКак скопировать/переместить контейнер Docker на другой хост

Как скопировать/переместить контейнер Docker на другой хост

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

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

Читайте также: Как настроить WordPress с помощью Docker в Ubuntu

Сохранить образ контейнера с исходного хоста

Предварительно останавливать контейнер не требуется, но настоятельно рекомендуется это сделать. Вы сделаете снимок данных в своем экземпляре Docker. Если он работает, пока вы это делаете, существует небольшая вероятность, что некоторые файлы в вашем снимке могут оказаться неполными. Представьте, что кто-то загружает файл размером 500 МБ. Когда будет загружено 250 МБ, вы вводите команду docker commit. Затем загрузка продолжается, но когда вы восстанавливаете этот образ Docker на другом хосте, может быть доступно только 250 МБ из 500 МБ.

Итак, если можете, сначала остановите экземпляр.

docker stop NAME_OF_INSTANCE

Сохранить образ контейнера с исходного хоста

общего исходного образа. Со временем вы добавляете свои изменения в этот базовый образ. Процессы, работающие внутри контейнера, также могут сохранять свои собственные данные или вносить другие изменения. Чтобы сохранить все это, вы можете зафиксировать это новое состояние в новом изображении.

Обратите внимание: если экземпляр запущен в данный момент, это действие приостановит его, пока его содержимое не будет сохранено. Если вы добавили в контейнер много данных, выполнение этой операции займет больше времени. Если это проблема, вы можете избежать этой паузы, введя docker commit -p=false NAME_OF_INSTANCE mycontainerimageвместо следующей команды. Однако не делайте этого без крайней необходимости. В этом случае вероятность создания изображения с противоречивыми/неполными данными возрастает.

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

docker commit NAME_OF_INSTANCE mycontainerimage
Docker Перемещение контейнеров Фиксация

Теперь сохраните это изображение в файл и сожмите его.

docker save mycontainerimage | gzip > mycontainerimage.tar.gz

Затем используйте предпочитаемый вами метод передачи файлов и скопируйте mycontainerimage.tar.gzна хост, на который вы хотите перенести контейнер.

Загрузить образ контейнера на целевой хост

После входа на хост, куда вы перенесли изображение, импортируйте его в Docker.

gunzip -c mycontainerimage.tar.gz | docker load

Поскольку вы никогда не инициализировали этот контейнер здесь, вы пока не можете запустить его с docker start. Вместо этого введите ту же команду, которую вы использовали раньше, когда впервые запускали этот экземпляр Docker. Единственная разница теперь заключается в том, что вы будете использовать в конце «mycontainerimage» вместо изображения, которое вы использовали раньше.

Следующая команда — это всего лишь пример; не копируйте и не вставляйте это, если это не относится к вам. (При первом запуске изображения никаких специальных параметров не требовалось)

docker run -d --name=PICK_NAME_FOR_CONTAINER mycontainerimage

Напротив, ниже приведен пример команды, в которой параметр --publishтребовался для перенаправления порта 80 на хост-компьютере на порт 80 в контейнере:

docker run -d --name=http-server --publish 80:80 mycontainerimage

После этого вы можете остановить и запустить этот контейнер обычным способом с помощью команд docker stopи docker start.

Перенос изображения без создания файла

Иногда вам может потребоваться пропустить создание файла mycontainerimage.tar.gz. Возможно, вам не хватает места на диске, поскольку в контейнере много данных. Вы можете сохранять, сжимать, передавать, распаковывать и загружать изображение на целевой хост с помощью одной команды. После запуска команды docker commit, описанной в первом разделе, вы можете использовать это:

docker save mycontainerimage | gzip | ssh root@203.0.113.1 'gunzip | docker load'

Он также должен работать и в Windows, поскольку она теперь имеет встроенный SSH-клиент (PuTTY больше не нужен).

Затем продолжайте использовать команду docker run, соответствующую вашей ситуации.

Заключение

docker saveи docker loadотлично подходят в качестве специального решения для периодического п

Загрузить образ контейнера на целевой хост

это часто, возможно, вам захочется вместо этого создать собственный частный репозиторий.

Изображение предоставлено: Медицинская служба ВВС

Перенос изображения без создания файла

Заключение

ПОХОЖИЕ СТАТЬИ

Популярные записи