Как использовать команду docker compose unpause для возобновления сервисов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы научитесь использовать команду docker compose unpause для возобновления приостановленных сервисов. Мы начнём с создания простого файла docker-compose.yml, который определяет базовый веб-сервис с использованием образа Nginx.

После настройки вы запустите сервисы с помощью команды docker compose up, затем приостановите их с помощью docker compose pause. В завершение вы используете docker compose unpause для возобновления работы сервисов и убедитесь, что они работают корректно. Это практическое упражнение продемонстрирует применение функций приостановки и возобновления сервисов в Docker Compose.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555095{{"Как использовать команду docker compose unpause для возобновления сервисов"}} docker/ps -.-> lab-555095{{"Как использовать команду docker compose unpause для возобновления сервисов"}} docker/pull -.-> lab-555095{{"Как использовать команду docker compose unpause для возобновления сервисов"}} end

Создание простого файла docker-compose.yml

На этом шаге мы создадим базовый файл docker-compose.yml. Этот файл является основой Docker Compose, определяя сервисы, сети и тома для вашего приложения. Перед началом нам необходимо установить Docker Compose, так как он не предустановлен в данной среде.

Сначала установим Docker Compose. Мы загрузим последнюю стабильную версию и сделаем её исполняемой.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Теперь проверим установку, посмотрев версию.

docker-compose --version

Вы должны увидеть информацию о версии в консоли, что подтвердит корректную установку Docker Compose.

Далее перейдём в директорию ~/project, которая является рабочей для этой лабораторной работы.

cd ~/project

Теперь создадим файл docker-compose.yml в этой директории. Этот файл будет определять простой сервис с использованием образа nginx. Для создания и редактирования файла воспользуемся редактором nano.

nano docker-compose.yml

В редакторе nano вставим следующее содержимое:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Разберём этот файл docker-compose.yml:

  • version: '3.8' — указывает версию формата файла Docker Compose.
  • services: — определяет различные сервисы, составляющие ваше приложение.
  • web: — имя нашего сервиса. Вы можете называть сервисы как угодно.
  • image: nginx:latest — указывает Docker-образ для этого сервиса. В данном случае мы используем последнюю версию официального образа Nginx. Если образ отсутствует локально, Docker Compose автоматически загрузит его из Docker Hub при запуске сервиса.
  • ports: — сопоставляет порты между хост-машиной и контейнером. "80:80" сопоставляет порт 80 на хосте с портом 80 в контейнере. Это означает, что вы сможете получить доступ к веб-серверу Nginx, работающему в контейнере, через http://localhost (или IP-адрес ВМ) на вашей хост-машине.

После вставки содержимого сохраните файл, нажав Ctrl + O, затем Enter для подтверждения имени файла, и наконец Ctrl + X для выхода из редактора nano.

Теперь вы успешно создали свой первый файл docker-compose.yml. На следующем шаге мы используем этот файл для запуска сервиса Nginx.

Запуск сервисов с помощью docker compose up

На этом шаге мы используем команду docker-compose up для запуска сервисов, определённых в нашем файле docker-compose.yml. Эта команда собирает, (пере)создаёт, запускает и подключается к контейнерам сервиса.

Убедитесь, что находитесь в директории ~/project, где был создан файл docker-compose.yml на предыдущем шаге.

cd ~/project

Теперь выполните следующую команду для запуска сервиса Nginx:

docker-compose up -d

Разберём команду:

  • docker-compose up — запускает сервисы, определённые в файле docker-compose.yml
  • -d — запускает контейнеры в detached mode (фоновом режиме), что означает их работу в фоне без блокировки терминала

При первом выполнении этой команды Docker Compose загрузит образ nginx:latest из Docker Hub, если он отсутствует в вашей системе. В выводе вы увидите процесс загрузки образа, создания и запуска контейнера.

Для проверки работы контейнера используйте команду docker ps:

docker ps

Вы должны увидеть запись для сервиса web (или аналогичное имя, основанное на вашей директории и имени сервиса) со статусом Up. Это указывает на то, что контейнер Nginx работает.

Также можно проверить доступность веб-сервера Nginx, используя curl для обращения к открытому порту 80:

curl http://localhost:80

В терминале вы должны увидеть HTML-код стандартной приветственной страницы Nginx. Это подтверждает, что сервер Nginx работает внутри контейнера и доступен с вашей хост-машины через сопоставленный порт.

Приостановка сервисов с помощью docker compose pause

На этом шаге мы научимся приостанавливать работающие сервисы с помощью команды docker-compose pause. Приостановка контейнера временно останавливает все его процессы. Это отличается от остановки контейнера, которая завершает процессы.

Убедитесь, что вы находитесь в директории ~/project, где расположен ваш файл docker-compose.yml и где работают ваши сервисы.

cd ~/project

Теперь выполните следующую команду для приостановки сервиса web:

docker-compose pause web

Вы должны увидеть вывод, указывающий на приостановку сервиса web.

Для проверки состояния контейнера используйте команду docker ps:

docker ps

Обратите внимание на колонку STATUS для контейнера сервиса web. Теперь там должен отображаться статус вида Up ... (Paused). Это подтверждает, что процессы контейнера приостановлены.

Пока контейнер приостановлен, веб-сервер Nginx внутри него не обрабатывает запросы. Если вы попытаетесь обратиться к нему через curl, запрос, скорее всего, зависнет или завершится по таймауту, так как сервер не отвечает.

curl http://localhost:80

Эта команда не вернёт сразу приветственную страницу Nginx, как это было при работающем контейнере. Возможно, вам потребуется нажать Ctrl + C, чтобы прервать команду через некоторое время.

Приостановка полезна, когда вам нужно временно остановить сервис без потери его текущего состояния.

Возобновление сервисов с помощью docker compose unpause

На этом шаге мы возобновим выполнение приостановленного сервиса с помощью команды docker-compose unpause. Эта команда возобновляет работу приостановленных контейнеров.

Убедитесь, что вы находитесь в директории ~/project, где расположен ваш файл docker-compose.yml.

cd ~/project

Теперь выполните следующую команду для возобновления сервиса web:

docker-compose unpause web

Вы должны увидеть вывод, указывающий на возобновление работы сервиса web.

Чтобы убедиться, что контейнер больше не приостановлен и работает нормально, снова используйте команду docker ps:

docker ps

Проверьте колонку STATUS для контейнера сервиса web. Теперь там должен отображаться статус вида Up ... без индикатора (Paused). Это означает, что процессы контейнера возобновились.

После возобновления работы веб-сервер Nginx внутри контейнера снова должен обрабатывать запросы. Вы можете подтвердить это, используя curl для обращения к открытому порту 80:

curl http://localhost:80

На этот раз вы должны немедленно получить HTML-код стандартной приветственной страницы Nginx, как это было после первоначального запуска контейнера. Это подтверждает, что сервис снова полностью работоспособен.

Команда unpause является противоположностью pause и позволяет быстро возобновить работу сервиса из приостановленного состояния.

Проверка работоспособности сервисов после возобновления

На этом шаге мы выполним окончательную проверку, чтобы убедиться, что сервис Nginx полностью работоспособен после возобновления. Хотя мы уже проверили статус контейнера на предыдущем шаге, рекомендуется дополнительно убедиться, что приложение внутри контейнера также работает корректно.

Убедитесь, что вы находитесь в директории ~/project.

cd ~/project

Снова воспользуемся командой curl для обращения к веб-серверу Nginx на порту 80.

curl http://localhost:80

В терминале должен отобразиться HTML-код стандартной приветственной страницы Nginx. Это подтверждает, что процесс Nginx внутри контейнера работает и обслуживает контент.

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

Наконец, для очистки запущенных контейнеров и сети, созданных Docker Compose, можно использовать команду docker-compose down. Эта команда останавливает и удаляет контейнеры, сети и тома, созданные командой up.

docker-compose down

Вы увидите вывод, указывающий на остановку и удаление сервиса и сети.

Чтобы убедиться, что контейнер больше не работает, используйте команду docker ps.

docker ps

В выводе не должно быть запущенных контейнеров, что подтверждает успешную остановку и удаление сервиса Nginx.

Итоги

В этой лабораторной работе мы изучили, как использовать Docker Compose для управления жизненным циклом сервисов. Мы начали с установки Docker Compose и создания файла docker-compose.yml для определения простого сервиса Nginx.

Затем мы использовали docker compose up для запуска определенного сервиса, docker compose pause для временной приостановки процессов сервиса и, наконец, docker compose unpause для возобновления приостановленного сервиса. На каждом этапе мы проверяли статус сервиса, демонстрируя практическое применение этих команд Docker Compose для управления выполнением сервисов.