如何使用 docker container unpause 命令恢复容器运行

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何管理 Docker 容器的状态,重点聚焦于暂停与恢复容器的操作。首先,你将创建并运行一个简单的容器。

完成创建后,你将练习暂停运行中的容器并验证其暂停状态。最后,你将学习如何恢复容器运行,并确认容器已继续执行。这个动手实践环节将帮助你切实掌握 docker container unpause 命令的使用方法。


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/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} docker/ps -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} docker/start -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} docker/stop -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} docker/rm -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} docker/pull -.-> lab-555126{{"如何使用 docker container unpause 命令恢复容器运行"}} end

创建并运行容器

在这一步骤中,你将学习如何创建和运行 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

现在,让我们以分离模式 (-d) 运行一个 ubuntu 容器,使其在后台运行。为了方便引用,我们为容器命名 (my-ubuntu)。我们将使用 tail -f /dev/null 命令使容器无限期保持运行状态。

docker run -d --name my-ubuntu ubuntu tail -f /dev/null

该命令将输出容器 ID。

<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 命令后接容器名称或 ID 来暂停它。

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 容器,其状态应显示为已暂停。请在 STATUS 列中查找 Paused 字样。

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 命令后接容器名称或 ID。

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

总结

在本实验中,你学习了如何通过拉取 hello-world 镜像并运行来创建和启动 Docker 容器。这演示了获取镜像并从中启动容器的基本流程。随后,你掌握了如何暂停运行中的容器(有效挂起其进程)并验证其暂停状态。最后,你练习了恢复暂停的容器以继续执行,并确认了容器已重新运行。