docker作业

文章目录

  • [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 服务对外发布)
      • [任务 1.1:使用 bridge 模式运行 nginx](#任务 1.1:使用 bridge 模式运行 nginx)
      • [任务 1.2:查看容器 IP](#任务 1.2:查看容器 IP)
      • [任务 1.3:访问服务](#任务 1.3:访问服务)
      • 验证要求
      • 思考题(必答)
  • [场景二:host 模式------高性能服务部署](#场景二:host 模式——高性能服务部署)
  • 场景背景(生产化)
  • 学生任务
      • [任务 2.1:使用 host 网络模式启动 nginx](#任务 2.1:使用 host 网络模式启动 nginx)
      • [任务 2.2:查看网络信息](#任务 2.2:查看网络信息)
      • 思考题(必答)
  • [场景三:container 模式------紧密耦合服务(Sidecar)](#场景三:container 模式——紧密耦合服务(Sidecar))
  • 场景背景(生产化)
    • 学生任务
      • [任务 3.1:启动](#任务 3.1:启动)
      • [任务 3.2:查看主容器网络命名空间](#任务 3.2:查看主容器网络命名空间)
      • [任务 3.4:对比两个容器的网络](#任务 3.4:对比两个容器的网络)
      • 验证要求
      • 思考题(必答)
  • [场景四:自定义 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 容器执行命令

要求进入容器执行:

  • ls
  • cat /etc/os-release(若镜像无该文件,可换 uname -a

提交证据:

  • docker exec -it web-prod-01 /bin/sh/bin/bash 过程截图(含命令与输出)

  • 说明:退出容器后容器仍在运行(给出 docker ps

场景 4:文件复制(主机↔容器)

任务 4.1:把宿主机文件复制到容器

要求:

  1. 在宿主机创建文件 ~/test.txt,内容为学号+姓名(例:2025xxx 张三

  2. 复制到容器 /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-01web-prod-01.tar

提交证据:

  • docker export web-prod-01 > web-prod-01.tar
  • ls -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/importsave/load 有什么区别?(写 3 句话以内)
  1. save/load 操作对象是镜像(保留完整层和元数据),export/import 操作对象是容器快照;
  2. export 导出的容器快照会丢失镜像历史,save 则完整保留镜像所有信息

场景 6:下线与清理(删除与批量删除)

任务 6.1:删除指定容器

要求:

  • 停止并删除 web-prod-01

提交证据:

  • docker stop web-prod-01
  • docker rm web-prod-01
  • docker ps -a | grep web-prod-01(无输出或说明不存在)

任务 6.2:批量停止所有容器(两种方式任选其一)

任选提交一种:

  1. docker stop $(docker ps -q)
  2. docker ps -a | awk ... | xargs docker stop

提交证据:命令 + 执行后 `docker ps

任务 6.3:删除所有容器

任选提交一种:

  1. docker rm -f $(docker ps -aq)
  2. docker ps -a | awk ... | xargs docker rm

提交证据:命令 + docker ps -a(结果为空)

任务 6.4:批量删除镜像(两种方式任选其一)

任选提交一种:

  1. 删除所有镜像:docker rmi -f $(docker images -q)
  2. 只删除 none 镜像:docker images | grep none | ...

提交证据:命令 + docker images(展示删除结果)

安全说明(必答):

为什么生产环境不建议直接执行"删除所有容器/镜像"?写出 2 点原因。

  1. 生产环境中可能存在承载核心业务的运行中容器,直接删除会瞬间中断线上服务,引发业务不可用、用户访问失败等生产故障;
  2. 全量删除镜像后,重建容器需重新从仓库拉取镜像,不仅消耗大量网络带宽、延长恢复时间,还可能因镜像仓库访问异常或版本归档缺失,导致容器无法正常重建

三、网络部分

下面是一套**"Docker 网络模式(除 none)场景化作业",专门给学生做实验用,覆盖 *bridge / host / container / 自定义网络(bridge 派生)* 四种模式。
每个模式都给了
真实生产场景背景 → 学生操作任务 → 验证点 → 思考题

Docker 网络模式场景化作业

实验说明-

实验环境:单台 Linux 主机(物理机/虚拟机均可)

  • 镜像建议:nginxcentos: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 模式的安全风险是什么?

  1. 网络隔离失效:容器直接暴露在宿主机网络中,无 Docker 网桥的隔离保护,容器内恶意程序可直接访问宿主机 / 外部网络资源,扩大攻击面;
  2. 端口冲突与未授权访问:容器服务直接占用宿主机端口,易与宿主机进程端口冲突,且端口无隔离,容器内服务易被未授权访问,甚至可通过网络层面突破容器隔离影响宿主机安全

场景三: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 地址转发以太网帧,实现同一网桥下容器的二层通信。

相关推荐
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382503 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇3 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7593 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣3 小时前
智能体选型实战指南
运维·人工智能
yy55273 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔6 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密6 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20156 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑