Остановка контейнера с использованием сигнала и таймаута по умолчанию
На этом шаге вы узнаете, как остановить работающий Docker-контейнер с использованием сигнала и таймаута по умолчанию. При остановке контейнера Docker отправляет сигнал основному процессу внутри контейнера. По умолчанию Docker отправляет сигнал SIGTERM
, который указывает процессу завершить работу корректно. Если процесс не завершается в течение стандартного периода ожидания (обычно 10 секунд), Docker отправляет сигнал SIGKILL
для принудительного завершения процесса.
Сначала запустим контейнер, который будет работать продолжительное время. Мы будем использовать образ ubuntu
и выполним простую команду, которая поддерживает работу контейнера.
docker pull ubuntu
Вы должны увидеть вывод, указывающий на загрузку образа ubuntu
.
Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Теперь запустим контейнер ubuntu
в detached-режиме (-d
), чтобы он работал в фоновом режиме, и выполним команду, которая будет поддерживать его работу бесконечно (например, tail -f /dev/null
).
docker run -d ubuntu tail -f /dev/null
Эта команда выведет ID контейнера.
<container_id>
Вы можете проверить, что контейнер работает, с помощью команды docker ps
:
docker ps
Вы должны увидеть контейнер ubuntu
со статусом Up
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Up About a minute ago <container_name>
Теперь остановим этот работающий контейнер с помощью команды docker stop
. Вы можете использовать либо ID контейнера, либо его имя. Замените <container_id>
на фактический ID вашего работающего контейнера.
docker stop <container_id>
Команда выведет ID остановленного контейнера.
<container_id>
После выполнения команды docker stop
контейнер получит сигнал SIGTERM
. Docker будет ждать в течение стандартного таймаута (10 секунд) для корректной остановки контейнера. Если контейнер не остановится за это время, будет отправлен сигнал SIGKILL
.
Вы можете проверить, что контейнер остановлен, снова выполнив команду docker ps
.
docker ps
Контейнер ubuntu
больше не должен отображаться в выводе docker ps
(который показывает только работающие контейнеры). Чтобы увидеть все контейнеры, включая остановленные, используйте docker ps -a
.
docker ps -a
Вы должны увидеть контейнер ubuntu
со статусом Exited
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" About a minute ago Exited (0) About a minute ago <container_name>
Это подтверждает, что контейнер был успешно остановлен с использованием сигнала и таймаута по умолчанию.