文章目录
- [Docker 场景化作业:生产环境容器操作实训](#Docker 场景化作业:生产环境容器操作实训)
- 一、作业目标
- 二、任务清单(按场景完成)
-
- [场景 1:上线发布(创建+启动合并,后台运行)](#场景 1:上线发布(创建+启动合并,后台运行))
-
- [任务 1.1:用 nginx 镜像创建并启动容器(后台运行)](#任务 1.1:用 nginx 镜像创建并启动容器(后台运行))
- [任务 2.2:启动该容器并查看状态](#任务 2.2:启动该容器并查看状态)
- [任务 2.3:停止容器](#任务 2.3:停止容器)
- [场景 3:排障进入容器(容器交互)](#场景 3:排障进入容器(容器交互))
-
- [任务 3.1:进入 web-prod-01 容器执行命令](#任务 3.1:进入 web-prod-01 容器执行命令)
- [场景 4:文件复制(主机↔容器)](#场景 4:文件复制(主机↔容器))
-
- [任务 4.1:把宿主机文件复制到容器](#任务 4.1:把宿主机文件复制到容器)
- [任务 4.2:从容器复制回宿主机](#任务 4.2:从容器复制回宿主机)
- [场景 5:容器迁移(导出与导入)](#场景 5:容器迁移(导出与导入))
-
- [任务 5.1:导出容器为 tar 包](#任务 5.1:导出容器为 tar 包)
-
- [任务 5.2:导入 tar 包生成新镜像](#任务 5.2:导入 tar 包生成新镜像)
- [场景 6:下线与清理(删除与批量删除)](#场景 6:下线与清理(删除与批量删除))
-
- [任务 6.1:删除指定容器](#任务 6.1:删除指定容器)
- [任务 6.2:批量停止所有容器(两种方式任选其一)](#任务 6.2:批量停止所有容器(两种方式任选其一))
- [任务 6.3:删除所有容器](#任务 6.3:删除所有容器)
- [任务 6.4:批量删除镜像(两种方式任选其一)](#任务 6.4:批量删除镜像(两种方式任选其一))
- 三、网络部分
-
- [Docker 网络模式场景化作业](#Docker 网络模式场景化作业)
- [场景一:bridge 模式(默认模式)------Web 服务对外发布](#场景一:bridge 模式(默认模式)——Web 服务对外发布)
- [场景二:host 模式------高性能服务部署](#场景二:host 模式——高性能服务部署)
- 场景背景(生产化)
- 学生任务
- [场景三:container 模式------紧密耦合服务(Sidecar)](#场景三:container 模式——紧密耦合服务(Sidecar))
- 场景背景(生产化)
- [场景四:自定义 bridge 网络------多容器系统与固定 IP](#场景四:自定义 bridge 网络——多容器系统与固定 IP)
下面是一份 基于你给出的讲义内容 、学生学完即可完成的 Docker 场景化作业 (可直接发班级群/学习平台)。我把作业设计成:**必做(基础)+ 选做(提高)+ 提交要求 ,并且所有操作都能在一台机器上完成。
Docker 场景化作业:生产环境容器操作实训
你是某公司运维/DevOps 实习生。现在需要在一台 Linux 服务器上完成Web 服务上线、巡检、排障、数据传递、迁移备份、下线清理等生产常见流程。要求你使用 Docker 完成对应操作并提交证据。
统一要求:实验过程全程使用命令行完成(浏览器验证可作为补充截图)。
一、作业目标
学生要求
- 容器操作:创建 / 启动 / 停止 / 查看
- docker run 创建+启动合并 ,并且后台持续运行
- 容器交互:
docker exec -it - 文件复制:
docker cp(主机→容器、容器→主机) - 容器迁移:
docker export/docker import - 下线清理:删除容器、批量停止、删除所有容器、批量删除镜像
- (加分)网络:bridge/host/container/none、自定义网络、端口映射
二、任务清单(按场景完成)
场景 1:上线发布(创建+启动合并,后台运行)
任务 1.1:用 nginx 镜像创建并启动容器(后台运行)
要求:
- 容器名:
web-prod-01 - 端口映射:宿主机
43000映射容器80 - 后台运行:必须使用
-d
提交证据:
docker ps输出(能看到端口映射)- 浏览器访问
http://宿主机IP:43000的截图(或 curl 输出)



docker ps -a` 输出(状态为 Created)
任务 2.2:启动该容器并查看状态
提交证据:
docker start <容器ID或名称>命令docker ps -a输出(状态为 Up 或 Exited 需解释原因)
任务 2.3:停止容器
提交证据:
docker stop <容器ID或名称>docker ps -a输出(状态为 Exited)
场景 3:排障进入容器(容器交互)
任务 3.1:进入 web-prod-01 容器执行命令
要求进入容器执行:
lscat /etc/os-release(若镜像无该文件,可换uname -a)
提交证据:
docker exec -it web-prod-01 /bin/sh或/bin/bash过程截图(含命令与输出)
说明:退出容器后容器仍在运行(给出docker ps)

场景 4:文件复制(主机↔容器)
任务 4.1:把宿主机文件复制到容器
要求:
- 在宿主机创建文件
~/test.txt,内容为学号+姓名(例:2025xxx 张三) 
复制到容器/opt/目录

提交证据:
- 宿主机:
cat ~/test.txt docker cp ~/test.txt web-prod-01:/opt/- 容器内验证:
cat /opt/test.txt(用 exec 进入或直接 exec 执行) 
任务 4.2:从容器复制回宿主机
要求:
- 从容器复制
/opt/test.txt到宿主机~/abc123.txt
提交证据:
docker cp web-prod-01:/opt/test.txt ~/abc123.txt- `cat ~/abc123.txt

场景 5:容器迁移(导出与导入)
任务 5.1:导出容器为 tar 包
要求:
- 导出
web-prod-01为web-prod-01.tar
提交证据:
docker export web-prod-01 > web-prod-01.tarls -lh web-prod-01.tar
任务 5.2:导入 tar 包生成新镜像
要求:
- 镜像名:
web-import:test
提交证据:
cat web-prod-01.tar | docker import - web-import:test- `docker ima ges | grep web-import

说明题(必答):
export/import和save/load有什么区别?(写 3 句话以内)
- save/load 操作对象是镜像(保留完整层和元数据),export/import 操作对象是容器快照;
- export 导出的容器快照会丢失镜像历史,save 则完整保留镜像所有信息
场景 6:下线与清理(删除与批量删除)
任务 6.1:删除指定容器
要求:
- 停止并删除
web-prod-01
提交证据:
docker stop web-prod-01docker rm web-prod-01docker ps -a | grep web-prod-01(无输出或说明不存在)

任务 6.2:批量停止所有容器(两种方式任选其一)
任选提交一种:
docker stop $(docker ps -q)docker ps -a | awk ... | xargs docker stop
提交证据:命令 + 执行后 `docker ps

任务 6.3:删除所有容器
任选提交一种:
docker rm -f $(docker ps -aq)docker ps -a | awk ... | xargs docker rm
提交证据:命令 + docker ps -a(结果为空)

任务 6.4:批量删除镜像(两种方式任选其一)
任选提交一种:
- 删除所有镜像:
docker rmi -f $(docker images -q) - 只删除 none 镜像:
docker images | grep none | ...
提交证据:命令 + docker images(展示删除结果)

安全说明(必答):
为什么生产环境不建议直接执行"删除所有容器/镜像"?写出 2 点原因。
- 生产环境中可能存在承载核心业务的运行中容器,直接删除会瞬间中断线上服务,引发业务不可用、用户访问失败等生产故障;
- 全量删除镜像后,重建容器需重新从仓库拉取镜像,不仅消耗大量网络带宽、延长恢复时间,还可能因镜像仓库访问异常或版本归档缺失,导致容器无法正常重建
三、网络部分
下面是一套**"Docker 网络模式(除 none)场景化作业",专门给学生做实验用,覆盖 *bridge / host / container / 自定义网络(bridge 派生)* 四种模式。
每个模式都给了真实生产场景背景 → 学生操作任务 → 验证点 → 思考题
Docker 网络模式场景化作业
实验说明-
实验环境:单台 Linux 主机(物理机/虚拟机均可)
- 镜像建议:
nginx、centos:7 - 禁止使用
--network none - 每个场景**必须执行命令并给出验证结果
场景一:bridge 模式(默认模式)------Web 服务对外发布
场景背景(生产化)
公司在一台服务器上部署多个 Web 服务,需要:
-
容器之间相互隔离
-
对外通过端口映射提供服务
这是最常见的生产 Docker 网络模式 。
学生任务
任务 1.1:使用 bridge 模式运行 nginx
任务 1.2:查看容器 IP
任务 1.3:访问服务
- 浏览器访问:
http://宿主机IP:8080 - 或命令:
验证要求
- docker ps` 中能看到端口映射
- 能通过宿主机端口访问容器服务
- 容器拥有**独立 IP


思考题(必答)
1️⃣ 为什么外部不能直接访问容器 IP?
容器 IP 是 Docker 网桥(bridge)分配的私有内网 IP,仅能在宿主机内网 / 容器网络内互通;外部网络(如公网、其他服务器)无路由指向该私有 IP 段,且宿主机默认不会转发外部对容器私有 IP 的访问请求,因此外部无法直接访问
2️⃣ bridge 模式下端口映射的作用是什么?
将宿主机的公网 / 内网端口与容器的私有端口绑定,把外部对宿主机端口的访问请求转发到容器内对应端口,突破容器私有 IP 的网络隔离,让外部能通过宿主机 IP + 映射端口访问容器内的服务。
场景二:host 模式------高性能服务部署
场景背景(生产化)
公司部署一个高性能 Web 服务/监控服务:
-
对网络性能敏感
-
不希望端口映射带来额外开销
因此直接让容器使用宿主机网络。
学生任务
任务 2.1:使用 host 网络模式启动 nginx
任务 2.2:查看网络信息
验证要求

- 不需要
-p参数 - 容器内看到的 IP 信息与宿主机一致


思考题(必答)
1️⃣ host 模式下,容器有没有独立 IP?
host 模式下容器没有独立 IP,它会共享宿主机的网络命名空间,直接使用宿主机的 IP 地址,网卡、端口等网络资源也与宿主机完全共用,无私有内网 IP。
2️⃣ host 模式适合什么类型的应用?
适合对网络性能要求极高、对延迟 / 吞吐量敏感的应用,如高并发 Web 服务、监控服务(Prometheus/Grafana)、大数据 / 流媒体传输服务,或需要规避端口映射转发开销的高性能场景
3️⃣ host 模式的安全风险是什么?
- 网络隔离失效:容器直接暴露在宿主机网络中,无 Docker 网桥的隔离保护,容器内恶意程序可直接访问宿主机 / 外部网络资源,扩大攻击面;
- 端口冲突与未授权访问:容器服务直接占用宿主机端口,易与宿主机进程端口冲突,且端口无隔离,容器内服务易被未授权访问,甚至可通过网络层面突破容器隔离影响宿主机安全
场景三:container 模式------紧密耦合服务(Sidecar)
场景背景(生产化)
某系统由两个组件组成:
-
主服务(Service)
-
辅助服务(日志/监控/代理)
要求:
-
两个容器共享网络
-
使用
localhost通信
学生任务
任务 3.1:启动

任务 3.2:查看主容器网络命名空间

任务 3.4:对比两个容器的网络

验证要求
两个容器 **IP 完全一致

- 网络命名空间相同
- 可通过
localhost通信
思考题(必答)
1️⃣ container 模式与 host 模式的区别?

2️⃣ 为什么称这种模式为 Sidecar(边车模式)?
物理上类比摩托车边车(绑定主车、同步移动、辅助功能):Sidecar 容器通过 container 模式绑定主服务容器,共享网络栈(同一网络上下文),专注日志、监控、代理等辅助功能,不干扰主服务核心逻辑,且与主服务生命周期绑定,因此得名。
场景四:自定义 bridge 网络------多容器系统与固定 IP
场景背景(生产化)
公司部署一个多服务系统:
- Web + App + DB
- 需要:
- 容器间直连
- 可指定 IP
- 网络与其他项目隔离
学生任务
任务 4.1:创建自定义网络

任务 4.2:在自定义网络中启动容器


任务 4.3:容器间通信测试

验证要求
- 自定义网络出现在
docker network ls - 容器 IP 为指定值
- 容器间可直接通信
思考题(必答)
1️⃣ 为什么默认 bridge 不能指定 IP?
默认 bridge 设计为轻量易用的基础网络,无静态 IP 分配的 IPAM 策略,仅支持动态随机分配 IP,且 Docker 未开放其静态 IP 配置入口,核心能力优先开放给自定义网络
2️⃣ 自定义网络适合什么场景?
适合多项目网络隔离、需固定 IP / 自定义子网、容器名直连通信,或跨主机 / 定制化网络的生产级多容器协同场景
3️⃣ Docker 如何实现容器间二层通信?
Docker 创建 Linux 网桥(如 docker0),通过 veth pair 虚拟网卡将容器接入网桥;网桥作为二层交换机,基于 MAC 地址转发以太网帧,实现同一网桥下容器的二层通信。