Docker и Docker Compose - Некоторые заметки

Администрирование linux
Ответить
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Docker и Docker Compose - Некоторые заметки

Сообщение ustim »

Docker и Docker Compose - Быстрая установка с помощью скрипта
Скачиваем официальный скрипт Docker+Docker Compose и сразу переименовываем:

Код: Выделить всё

curl -fsSL https://get.docker.com -o get-docker.sh
Теперь запускаем скрипт установки:

Код: Выделить всё

sh ./get-docker.sh
Проверяем после установки:

Код: Выделить всё

docker --version

Код: Выделить всё

docker compose version
Посмотреть контейнеры
Только запущенные

Код: Выделить всё

docker ps
Все контейнеры

Код: Выделить всё

docker ps -a
Показать все контейнеры и отображать размер

Код: Выделить всё

docker ps -a -s
Очистка неиспользуемых данных

Код: Выделить всё

docker system prune
Поиск и удаление недействительных образов

Код: Выделить всё

docker images -f dangling=true

Код: Выделить всё

docker rmi $(docker images -f dangling=true -q)
Недействительные образы – это уровень образов, которые больше не имеют никакого отношения к образам с метками — они впустую потребляют дисковое пространство.
Как редактировать файл в контейнере?
Есть несколько способов достичь этого:

Вы можете войти в контейнер, выполнив команду:

Код: Выделить всё

docker exec -it <container-name> bash
Примечание однако в зависимости от контейнера у вас может не быть простого текстового редактора..

Другой альтернативой было бы скопировать файл, который вы хотите отредактировать, из контейнера на ваш хост, запустив его:

Код: Выделить всё

docker cp <container-name>:/path/to/file/in/container
.

Отредактируйте файл и скопируйте его обратно в контейнер:

Код: Выделить всё

docker cp <file> <container-name>:/path/to/file/in/container
Третий вариант-создать bind mount , который будет эффективно предоставлять файл из контейнера на хост

Код: Выделить всё

docker run -v $(pwd)/files:/dir/containing/file/in/container
...

Это позволит открыть папку контейнера в каталоге "files", и вы можете редактировать файл на хосте, и он будет непосредственно отражен внутри контейнера.
Как удалить сразу все контейнеры?
Для начала останавливаем все контейнеры

Код: Выделить всё

docker stop $(docker ps -a -q)
А теперь удаляем

Код: Выделить всё

docker rm $(docker ps -a -q)
Резервное копирование и восстановление
Как создать резервную копию и восстановить контейнер Docker?
Docker позволяет автоматизировать процесс создания и развертывания приложения. Он также позволяет нам создать пакетную среду для запуска приложения, что делает его легко переносимым и легким, а также позволяет отслеживать версии. Все это возможно с помощью контейнеров Docker. Они помогают сделать приложения независимыми от платформы.

Допустим, на нашей машине запущен контейнер docker, и мы хотим сделать снимок или сохранить резервную копию этого контейнера, чтобы в случае непредвиденных обстоятельств, если мы захотим откатить изменения или запустить контейнер с предыдущей временной меткой, мы могли легко сделать это с помощью сохраненных резервных копий. Таким образом, резервное копирование docker-контейнера и восстановление может стать важным компонентом проекта.

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

Резервное копирование контейнера Docker
Прежде всего, для резервного копирования контейнера docker нужен идентификатор контейнера данного конкретного контейнера. С помощью команды ps получаем идентификаторы всех запущенных контейнеров и копируем нужный для резервного копирования.

Для этого необходимо выполнить следующую команду:

Код: Выделить всё

sudo docker ps −a
После этого скопируйте идентификатор контейнера docker, для которого вы хотите создать резервную копию. Для создания моментального снимка контейнера docker используется команда docker commit. Формат команды Docker commit следующий:
sudo docker commit −p <CONTAINER_ID> <BACKUP_NAME>
Например

Код: Выделить всё

sudo docker commit −p 5c2f44fbb535 backup-ubuntu
Чтобы сохранить образ в виде tar-файла на локальной машине, можно использовать следующую команду:

Код: Выделить всё

sudo docker save −o ∽/backup−ubuntu.tar backup−ubuntu
Проверим наличие сохраненного tar-файла:

Код: Выделить всё

sudo ls −l ∽/backup−ubuntu.tar
Вы также можете отправить резервную копию образа непосредственно в реестр docker. Для этого используйте следующую команду:

Код: Выделить всё

sudo docker login

Код: Выделить всё

sudo docker push backup−ubuntu:tag
Замените имя пользователя на имя пользователя вашего хаба docker.

Восстановление контейнера Docker
После создания резервной копии контейнера docker, если необходимо восстановить контейнер для его использования, вот как это можно сделать.

Если было сохранено tar-файлом на хост-машине, можно просто восстановить его с помощью команды docker load. Для этого используйте приведенную ниже команду:

Код: Выделить всё

sudo docker load −i ∽/backup-ubuntu.tar
Чтобы подтвердить, был ли образ успешно восстановлен или нет, можно вывести список всех образов с помощью следующей команды:

Код: Выделить всё

sudo docker images
Если резервная копия образа была помещена в реестр docker, ее можно извлечь обратно с помощью следующей команды:

Код: Выделить всё

sudo docker pull backup-ubuntu:tag
После того как восстановленный образ будет размещен на локальной машине, с помощью команды docker run можно запустить новый экземпляр восстановленного образа docker. Для этого можно использовать команду, приведенную ниже:

Код: Выделить всё

sudo docker run −ti backup−ubuntu:tag
Если необходимо перенести контейнер docker, запущенный на хост-машине, на другую машину, для этого можно использовать комбинацию обоих процессов (резервного копирования и восстановления). Если создана резервная копия образа и размещена в реестре docker, можно просто войти на целевую машину и извлечь резервную копию образа. В случае, если были созданы tar-файлы для резервного копирования контейнера, можно скопировать и вставить tar-файл на целевую машину и использовать команду docker load для загрузки образа, а затем выполнить команду docker run для запуска контейнера.
Ответить