Введение
В этой лабораторной работе вы научитесь управлять состоянием контейнеров Docker, уделяя особое внимание их приостановке и возобновлению. Вы начнёте с создания и запуска простого контейнера.
После создания вы попрактикуетесь в приостановке работающего контейнера и проверке его состояния. Наконец, вы узнаете, как возобновить работу контейнера и убедиться, что он продолжил выполнение. Этот практический опыт даст вам понимание использования команды docker container unpause.
Создание и запуск контейнера
На этом шаге вы узнаете, как создать и запустить контейнер Docker. Контейнер — это стандартная единица программного обеспечения, которая упаковывает код и все его зависимости, чтобы приложение могло быстро и надежно работать в различных вычислительных средах.
Сначала загрузим простой образ из Docker Hub. Мы будем использовать образ hello-world, который представляет собой очень маленький образ для тестирования установки Docker.
docker pull hello-world
Вы должны увидеть вывод, указывающий на загрузку и извлечение образа.
Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
Теперь, когда у нас есть образ, мы можем запустить контейнер на его основе. При запуске контейнера из образа hello-world Docker просто выведет сообщение в терминал и завершит работу.
docker run hello-world
Вы должны увидеть вывод, подобный этому, который подтверждает, что ваша установка Docker работает корректно:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(If you already had the image locally, skipped the pull step.)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Эта команда создала и запустила контейнер из образа hello-world. Поскольку задача контейнера заключалась только в выводе сообщения и завершении работы, он больше не выполняется.
Приостановка работающего контейнера
На предыдущем шаге мы запустили простой контейнер, который сразу завершил работу. Чтобы продемонстрировать приостановку и возобновление, нам нужен контейнер, который продолжает работать. Мы будем использовать простой контейнер ubuntu и поддерживать его работу в фоновом режиме.
Сначала загрузим образ ubuntu.
docker pull ubuntu
Вы должны увидеть вывод, указывающий на загрузку и извлечение образа.
Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Теперь запустим контейнер ubuntu в отсоединённом режиме (-d), чтобы он работал в фоне. Мы также присвоим ему имя (my-ubuntu) для удобства. Используем команду tail -f /dev/null, чтобы контейнер работал бесконечно.
docker run -d --name my-ubuntu ubuntu tail -f /dev/null
Эта команда выведет идентификатор контейнера.
<container_id>
Вы можете проверить, что контейнер работает, с помощью команды docker ps.
docker ps
Вы должны увидеть вывод, подобный этому, где контейнер my-ubuntu будет иметь статус Up.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" X seconds ago Up X seconds my-ubuntu
Теперь, когда у нас есть работающий контейнер, мы можем приостановить его с помощью команды docker pause, указав имя или идентификатор контейнера.
docker pause my-ubuntu
Если команда выполнена успешно, вывода не будет. Контейнер теперь приостановлен.
Проверка состояния приостановки контейнера
На предыдущем шаге мы приостановили контейнер my-ubuntu. Теперь давайте убедимся, что контейнер действительно находится в приостановленном состоянии.
Мы можем снова использовать команду docker ps для проверки статуса работающих контейнеров.
docker ps
Эта команда покажет только активные контейнеры. Поскольку мы приостановили контейнер my-ubuntu, он не должен отображаться в выводе docker ps.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Чтобы увидеть все контейнеры, включая остановленные, завершённые или приостановленные, мы можем использовать флаг -a с командой docker ps.
docker ps -a
Теперь вы должны увидеть контейнер my-ubuntu в списке, и его статус должен указывать на приостановленное состояние. Ищите слово Paused в колонке STATUS.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" X minutes ago Up X minutes (Paused) my-ubuntu
Статус (Paused) подтверждает, что контейнер не активен, но остаётся в памяти и готов к возобновлению работы.
Возобновление работы контейнера
На предыдущем шаге мы убедились, что контейнер my-ubuntu был приостановлен. Теперь давайте возобновим его работу.
Для возобновления работы контейнера используем команду docker unpause, указав имя или идентификатор контейнера.
docker unpause my-ubuntu
При успешном выполнении команды вывод отсутствует. Контейнер должен продолжить работу с момента приостановки.
Проверка возобновления работы контейнера
На предыдущем шаге мы возобновили работу контейнера my-ubuntu. Теперь убедимся, что он снова активен.
Для вывода списка работающих контейнеров используем команду docker ps:
docker ps
Теперь контейнер my-ubuntu должен отображаться в выводе со статусом Up:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" X minutes ago Up X seconds my-ubuntu
Статус Up означает, что контейнер работает и его процессы активны.
Для дополнительной проверки можно использовать docker ps -a - статус должен отображаться как Up без пометки (Paused):
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<container_id> ubuntu "tail -f /dev/null" X minutes ago Up X seconds my-ubuntu
Это подтверждает успешное возобновление работы контейнера после приостановки.
Наконец, удалим созданный контейнер. Сначала остановим его:
docker stop my-ubuntu
Команда остановит контейнер и выведет его имя или ID:
my-ubuntu
Теперь удалим контейнер командой docker rm:
docker rm my-ubuntu
Команда удалит контейнер и выведет его имя или ID:
my-ubuntu
Резюме
В этой лабораторной работе вы научились создавать и запускать Docker-контейнер, скачав образ hello-world и выполнив его. Это продемонстрировало базовый процесс получения образа и запуска контейнера на его основе. Затем вы узнали, как приостановить работающий контейнер, фактически заморозив его процессы, и проверить его состояние. Наконец, вы попрактиковались в возобновлении работы контейнера и убедились, что он снова запущен.



