2.2 容器管理

本次实验深入讲解了 Docker 容器的基本操作,包括创建(docker run
、docker create
)、启动(docker start
)、停止(docker stop
)、重命名(docker rename
)和删除(docker rm
)容器。
上节回顾
在上一节实验中,我们学习了 Docker 镜像的基础操作,主要掌握了以下命令:
在开始本次实验前,请完成以下准备工作:
- 删除所有镜像(可以
-f
参数强制删除) - 下载镜像:
harbor.seahi.me/docker/ubuntu:latest
- 将下载的镜像改名为:
ubuntu:latest
- 下载镜像:
harbor.seahi.me/docker/httpd
- 将下载的镜像改名为:
httpd
- 下载镜像:
harbor.seahi.me/docker/busybox
- 将下载的镜像改名为:
busybox
验证:
实验简介
本次实验主要聚焦于 Docker 容器的基本操作,包括创建、启动、停止、删除和重命名容器。我们将学习以下核心命令:
通过本实验,你将掌握容器生命周期的完整管理流程,为后续更复杂的 Docker 应用打下基础。
实验任务
任务一:创建并启动容器
Docker 容器是镜像的运行实例。使用 docker run
命令可以从镜像创建并启动一个容器。这个命令非常灵活,有多种使用方式。
1.创建自动终止的容器
首先创建一个执行单一命令后自动终止的容器:
docker run ubuntu:latest /bin/echo "这是一个自动终止的容器"
这个命令的工作流程:
- Docker 从
ubuntu:latest
镜像创建一个新容器 - 在容器中执行
/bin/echo "这是一个自动终止的容器"
命令 - 命令执行完毕后,容器自动停止
latest
时,可以省略不写,例如:docker run ubuntu /bin/echo "这是一个自动终止的容器"
**2.创建交互式容器
如果需要与容器进行交互(例如在容器内执行多个命令),可以使用 -it
参数:
docker run -it ubuntu
在交互模式下,你可以像使用普通 Linux 系统一样在容器内执行命令。要退出容器,只需输入 exit
命令:
exit
退出交互式容器会导致容器停止。3. 创建后台运行的容器
docker run -d -p 80:80 --name testweb httpd
参数说明:
-d
:在后台运行容器(detached 模式)-p 80:80
:将宿主机的 80 端口映射到容器内的 80 端口--name testweb
:为容器指定一个名称,便于后续操作
验证容器是否正在运行:
docker ps
如果不指定容器名称,Docker 会自动生成一个随机名称:
docker run -d -p 81:80 httpd
验证效果:
docker ps
如上图所示,我们没有指定名字,Docker 就会随机分配一个。
- 在容器内执行特定命令:将命令放在
docker run <镜像名>
后面 -it
:交互式运行,允许你进入容器内部并与之交互-d
:后台运行容器,适用于服务类应用--name
:为容器指定一个易记的名称,方便管理-p <宿主端口>:<容器端口>
:端口映射,使容器内服务可从外部访问
任务二:创建容器但不启动(了解)
有时我们需要创建容器但暂不启动它,这可以通过 docker create
命令实现。
1.使用 busybox 镜像创建一个容器但不运行
docker create -it busybox
验证,查看当前的容器:
docker ps
注意,使用 docker ps
看不到刚创建的容器,因为它默认只显示正在运行的容器。要查看所有容器(包括未运行的),需要添加 -a
参数:
docker ps -a
从输出可以看到,新创建的容器状态为 “Created”,而不是 “Up”(运行中)。
docker create
命令接受与 docker run
相同的大多数参数,区别仅在于它不会启动容器。这对于准备容器配置但延迟启动的场景很有用。任务三:启动和停止容器
对于已创建的容器,我们可以使用 docker start
和 docker stop
命令来控制其运行状态。
1.启动容器
使用容器 ID 或名称启动一个已创建的容器:
docker start <容器ID或名称>
验证容器是否已启动:
docker ps
现在容器状态已从 “Created” 变为 “Up”,表示容器正在运行。
2.停止容器
docker stop <容器ID或名称>
验证容器是否已停止:
docker ps -a
容器状态现在显示为 “Exited”,表示容器已停止运行但仍然存在。
docker stop
命令会发送 SIGTERM 信号给容器内的主进程,给它一个优雅关闭的机会。如果进程在一定时间内(默认10秒)没有退出,Docker 会发送 SIGKILL 信号强制终止。
如果需要立即强制停止容器,可以使用 docker kill
命令,它直接发送 SIGKILL 信号。
任务四:重命名容器
如果需要更改容器的名称,可以使用 docker rename
命令。
1.查看当前容器列表
docker ps
2.重命名容器
docker rename testweb testweb-1
这个命令将名为 “testweb” 的容器重命名为 “testweb-1”。
验证重命名是否成功:
docker ps
任务五:删除容器
当不再需要某个容器时,可以使用 docker rm
命令将其删除。
其中 -f
参数是 “强制删除”
1.尝试删除运行中的容器
docker rm testweb-1
默认情况下,Docker 不允许删除正在运行的容器,会返回错误信息。
解决这个问题有两种方法:
- 先停止容器,再删除:
docker stop testweb-1
然后docker rm testweb-1
- 使用
-f
参数强制删除:docker rm -f testweb-1
2.强制删除
docker rm -f testweb-1
使用 -f
参数后,Docker 会先停止容器,然后删除它,即使容器正在运行。
作业
执行以下命令并提交截图:
history | grep docker