本次实验讲解 Docker 容器的基本操作,包括创建、启动、停止、重命名和删除容器。
上节回顾
在上一节实验中,我们学习了 Docker 镜像的基础操作,主要掌握了以下命令:

准备工作
在开始本次实验前,请完成以下准备工作:
- 先删除所有镜像(可以
-f参数强制删除) - 下载镜像:
ubuntu:latest - 下载镜像:
httpd - 下载镜像:
busybox
使用 docker rmi 镜像名或者ID 命令对镜像进行删除
查看镜像列表进行验证:

实验任务
任务一:创建并启动容器
Docker 容器是镜像的运行实例。使用 docker run 命令可以创建并启动一个容器。这个命令非常灵活,有多种使用方式。
1.创建交互式容器
如果需要进入容器进行交互(例如在容器内执行命令),可以使用 -it 参数:
docker run -it ubuntu

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

使用 exit 退出交互式容器会导致容器停止。
2. 创建后台运行的容器
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

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

如上图所示,我们没有指定名字,Docker 就会随机分配一个。
- 在容器内执行特定命令:将命令放在
docker run <镜像名>后面 -it:交互式运行,允许你进入容器内部并与之交互-d:后台运行容器,适用于服务类应用--name:为容器指定一个易记的名称,方便管理-p <宿主端口>:<容器端口>:端口映射,使容器内服务可从外部访问
任务二:创建容器但不启动(了解)
有时我们需要创建容器但暂时不启动它,这可以通过 docker create 命令实现。
BusyBox 是一个集成了数百个最常用 Linux 命令和工具的软件,它将这些工具压缩成一个单一的可执行文件,因此被称为“嵌入式 Linux 的瑞士军刀”。
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 会先停止容器,然后删除它,即使容器正在运行。
强制删除容器可能会导致容器内的应用无法正常关闭,可能造成数据丢失。在生产环境中,建议先优雅地停止容器,然后再删除它。
练习
创建开发环境容器
- 基于ubuntu镜像创建名为
dev-env的交互式容器
- 基于ubuntu镜像创建名为
部署个人网站
- 基于httpd镜像创建名为
my-website的Web服务器容器 - 将宿主机8080端口映射到容器80端口
- 在后台运行
- 基于httpd镜像创建名为
准备工具容器
- 基于busybox镜像创建名为
toolkit的工具容器 - 暂时只创建不启动,备用
- 基于busybox镜像创建名为
知识总结
本次实验主要聚焦于 Docker 容器的基本操作,包括创建、启动、停止、删除和重命名容器。需要牢记以下核心命令:


