Как в docker-compose перезапустить запущенный контейнер с пересборкой
После редактирования Dockerfile или docker-compose.yml файла, например, прообрасывания порта или добавления волюма, изменения не вступают автоматически! Даже если сделать restart контейнера то всё-равно ничего не изменится. Чтобы применить изменения к контейнеру его нужно пересобрать (build).
How to rebuild docker container in docker-compose.yml?
Проще всего сделать это одной командой:
На экран будет выведено что-то типа:
И через несколько секунд контейнер с нужными свойствами будет запущен. Эта команда выполняет несколько действий: пересобирает образ, создаёт новый контейнер на основе нового образа, останавливает старый контейнер, запускает новый контейнер, удаляет старый контейнер.
Обратите внимание, т.к. контейнер будет пересоздан, все изменения в нём не сохранённые во внешние хранилища будут утеряны!
Если нужно будет пересобрать все сервисы, то можно запустить ту же команду без указания сервиса:
Как создать копию контейнера lxd и перенести его на другой компьютер
Достаточно часто при использование виртуализации при помощи контейнеров lxd возникает необходимость переноса контейнеров с компьютера на компьютер. Это можно сделать достаточно просто.
Предположим у вас есть контейнер с именем mycont и его нужно перенести на другой компьютер. Для создания полного бэкапа контейнера как тарбола образа контейнера (image tarball) необходимо сделать следующее:
После этого в текущей директории появится сжатый файл тарбола с очень большим именем файла, типа:
Этот файл нужно перенести на нужный вам компьютер. Для восстановления и создания контейнера из полученного тарбола необходимо выполнить следующие команды::
Где TARBALL-NAME — имя полученного сжатого тарбола, например:
а some-container-name — имя нового контейнера на другой машине.
Как перенести контейнер докера на другой сервер?
Имеем docker контейнер который нужно перенести на другой хост. По сути наша задача сводится с переносу образа на новый хост и запуску контейнера из этого образа.
Смотрим на контейнер
Посмотреть какие тома присоединены к контейнеру можно в разделе «Mounts» в выводе команды:
Сохранение образа. На первом месте куда сохранять, на втором что сохранять.
Копируем тома(volumes). По умолчанию лежат «/var/lib/docker/volumes/». На первом месте указываем куда копировать, на втором что:
Переносим образ и тома на новый хост, можно сделать при помощи «scp». Если порт SSH не стандартный, нужно его указать ключом «-P». Ключ «-P» должен быть на первом месте. Далее указываем что копировать, потом хост куда копировать в формате %имя_пользователя%@%адрес_хоста%:%путь_куда_копировать%. При указании «~» в пути файл скопируется в домашнюю папку пользователя.
По завершении копирования тома нужно разархивировать и закинуть на место(по умолчанию «/var/lib/docker/volumes/»):
Кормим докер нашим образом:
После всех этих процедур докер увидит образ и позволит создать из него контейнер.
Как перенести контейнер докеров с одного компьютера на другой?
Скажем, я запускаю контейнер Docker на своем персональном компьютере, я хочу перенести этот контейнер на мою машину для друзей. Проблема здесь — в контейнере работает бесконечная программа цикла, я не хочу убивать эту программу. Вместо этого я хочу приостановить контейнер, закрепить контейнер, а затем отправить в мою систему друзей.
Это возможно с помощью виртуальной машины. Приостановите виртуальную машину, запишите файлы и отправьте туда, где захотите. Как сделать то же самое в Docker?
Пожалуйста, поправьте меня, если я ошибаюсь — я думаю, что можно приостановить контейнер докеров, а затем переместить этот контейнер на другую машину. Если да, скажите, пожалуйста, как?
Ответ 5
Это сохраняет данные в объемах.
Я пробовал много решений для этого, и это то, что работает для меня:
1. сохранить/сохранить контейнер в новом изображении:
-
++ зафиксировать контейнер:
# остановка докера
# docker commit CONTAINER_NAME
# docker save —output IMAGE_NAME.tar IMAGE_NAME: TAG
ps: «Наш контейнер CONTAINER_NAME имеет смонтированный том в»/var/home «» (вы должны проверить свой контейнер, чтобы указать путь к нему: # docker inspect CONTAINER_NAME)
-
++ сохранить его объем: мы будем использовать образ Ubuntu, чтобы сделать это.
# Резервное копирование mkdir
# docker run —rm — -v в полях — от CONTAINER_NAME -v $ /backup: /backup ubuntu bash -c «cd/var/home && tar cvf/backup/volume_backup.tar.»
Теперь, когда вы посмотрите на $ /backup, вы найдете наш том в формате tar.
До сих пор у нас есть изображение conatainer ‘IMAGE_NAME.tar’ и его том ‘volume_backup.tar’.
Изменить каталог данных Docker
Как я могу изменить каталог данных Docker, где docker сохраняет контейнер (или где lxc сохраняет контейнер)? На моем сервере есть ssd и жесткий диск, и я хочу, чтобы контейнер был сохранен на жестком диске. Спасибо
Я считаю, что в этом руководстве вы найдете хорошее объяснение.
Вы можете изменить базовый каталог хранилища Docker (куда направляются контейнер и изображения), используя опцию -g при запуске демона Docker.
Ubuntu / Debian: отредактируйте свой /etc/default/docker файл с -g опция: DOCKER_OPTS=»-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt»
Fedora / Centos: редактировать /etc/sysconfig/docker и добавьте -g опция в переменной other_args: напр. other_args=»-g /var/lib/testdir» , Если есть более одного варианта, убедитесь, что вы заключили их в » «. После перезапуска (перезапуск службы Docker) Docker должен использовать новый каталог.
Использование символической ссылки — это еще один способ изменить хранилище изображений.
Внимание. Эти шаги зависят от того, является ли текущий каталог /var/lib/docker действительным каталогом (а не символической ссылкой на другое местоположение).
1) Стоп докер: service docker stop , Убедитесь, что процесс docker не запущен ps faux
2) Докер двойной проверки действительно не работает. Взгляните на текущий каталог докеров: ls /var/lib/docker/
2б) Сделать резервную копию — tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz
3) Переместить /var/lib/docker каталог для вашего нового раздела: mv /var/lib/docker /mnt/pd0/docker
4) Сделать символическую ссылку: ln -s /mnt/pd0/docker /var/lib/docker
5) Взгляните на структуру каталогов, чтобы убедиться, что она выглядит так, как это делала до mv: ls /var/lib/docker/ (обратите внимание на косую черту
6) Запустите докер обратно service docker start
7) перезапустите ваши контейнеры, разрешите символическую ссылку)