2.2 容器管理

系列 - Docker快速入门

本次实验深入讲解了 Docker 容器的基本操作,包括创建(docker rundocker create)、启动(docker start)、停止(docker stop)、重命名(docker rename)和删除(docker rm)容器。

在上一节实验中,我们学习了 Docker 镜像的基础操作,主要掌握了以下命令:

在开始本次实验前,请完成以下准备工作:

  1. 删除所有镜像(可以-f参数强制删除)
  2. 下载镜像:harbor.seahi.me/docker/ubuntu:latest
  3. 将下载的镜像改名为:ubuntu:latest
  4. 下载镜像:harbor.seahi.me/docker/httpd
  5. 将下载的镜像改名为:httpd
  6. 下载镜像:harbor.seahi.me/docker/busybox
  7. 将下载的镜像改名为:busybox

验证:

本次实验主要聚焦于 Docker 容器的基本操作,包括创建、启动、停止、删除和重命名容器。我们将学习以下核心命令:

通过本实验,你将掌握容器生命周期的完整管理流程,为后续更复杂的 Docker 应用打下基础。

Docker 容器是镜像的运行实例。使用 docker run 命令可以从镜像创建并启动一个容器。这个命令非常灵活,有多种使用方式。

1.创建自动终止的容器

首先创建一个执行单一命令后自动终止的容器:

bash

docker run ubuntu:latest /bin/echo "这是一个自动终止的容器"

这个命令的工作流程:

  1. Docker 从 ubuntu:latest 镜像创建一个新容器
  2. 在容器中执行 /bin/echo "这是一个自动终止的容器" 命令
  3. 命令执行完毕后,容器自动停止
技巧
当镜像的标签是 latest 时,可以省略不写,例如:docker run ubuntu /bin/echo "这是一个自动终止的容器"

**2.创建交互式容器

如果需要与容器进行交互(例如在容器内执行多个命令),可以使用 -it 参数:

bash

docker run -it ubuntu 

在交互模式下,你可以像使用普通 Linux 系统一样在容器内执行命令。要退出容器,只需输入 exit命令:

信息
使用 exit 退出交互式容器会导致容器停止。

3. 创建后台运行的容器

bash

docker run -d -p 80:80 --name testweb httpd

参数说明:

  • -d:在后台运行容器(detached 模式)
  • -p 80:80:将宿主机的 80 端口映射到容器内的 80 端口
  • --name testweb:为容器指定一个名称,便于后续操作

验证容器是否正在运行:

bash

docker ps

如果不指定容器名称,Docker 会自动生成一个随机名称:

bash

docker run -d -p 81:80  httpd

警告
注意端口映射时,同一个宿主机端口不能被多个容器使用。这就是为什么第二个命令使用了 81 端口而不是 80 端口。

验证效果:

bash

docker ps

如上图所示,我们没有指定名字,Docker 就会随机分配一个。

参数总结
  • 在容器内执行特定命令:将命令放在 docker run <镜像名> 后面
  • -it:交互式运行,允许你进入容器内部并与之交互
  • -d:后台运行容器,适用于服务类应用
  • --name:为容器指定一个易记的名称,方便管理
  • -p <宿主端口>:<容器端口>:端口映射,使容器内服务可从外部访问

有时我们需要创建容器但暂不启动它,这可以通过 docker create 命令实现。

1.使用 busybox 镜像创建一个容器但不运行

bash

docker create -it busybox

验证,查看当前的容器:

bash

docker ps

注意,使用 docker ps 看不到刚创建的容器,因为它默认只显示正在运行的容器。要查看所有容器(包括未运行的),需要添加 -a 参数:

bash

docker ps -a

从输出可以看到,新创建的容器状态为 “Created”,而不是 “Up”(运行中)。

技巧
docker create 命令接受与 docker run 相同的大多数参数,区别仅在于它不会启动容器。这对于准备容器配置但延迟启动的场景很有用。

对于已创建的容器,我们可以使用 docker start 和 docker stop 命令来控制其运行状态。

1.启动容器

使用容器 ID 或名称启动一个已创建的容器:

bash

docker start <容器ID或名称>

验证容器是否已启动:

bash

docker ps

现在容器状态已从 “Created” 变为 “Up”,表示容器正在运行。

2.停止容器

bash

docker stop <容器ID或名称>

验证容器是否已停止:

bash

docker ps -a

容器状态现在显示为 “Exited”,表示容器已停止运行但仍然存在。

信息

docker stop 命令会发送 SIGTERM 信号给容器内的主进程,给它一个优雅关闭的机会。如果进程在一定时间内(默认10秒)没有退出,Docker 会发送 SIGKILL 信号强制终止。

如果需要立即强制停止容器,可以使用 docker kill 命令,它直接发送 SIGKILL 信号。

如果需要更改容器的名称,可以使用 docker rename 命令。

1.查看当前容器列表

bash

docker ps

2.重命名容器

bash

docker rename testweb testweb-1

这个命令将名为 “testweb” 的容器重命名为 “testweb-1”。

验证重命名是否成功:

bash

docker ps

成功
容器重命名不会影响容器的运行状态或配置,只是更改了它的标识符。这对于规范化命名或修正错误的命名非常有用。

当不再需要某个容器时,可以使用 docker rm 命令将其删除。

其中 -f 参数是 “强制删除”

1.尝试删除运行中的容器

bash

docker rm testweb-1

默认情况下,Docker 不允许删除正在运行的容器,会返回错误信息。

解决这个问题有两种方法:

  1. 先停止容器,再删除:docker stop testweb-1 然后 docker rm testweb-1
  2. 使用 -f 参数强制删除:docker rm -f testweb-1

2.强制删除

bash

docker rm -f testweb-1

使用 -f 参数后,Docker 会先停止容器,然后删除它,即使容器正在运行。

警告
强制删除容器可能会导致容器内的应用无法正常关闭,可能造成数据丢失。在生产环境中,建议先优雅地停止容器,然后再删除它。

执行以下命令并提交截图:

bash

history | grep docker

相关内容