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

相关推荐
运维行者_2 小时前
OPM 与传统管理工具的区别,在网络修复与自动化运维方面的优势在哪里?
运维·服务器·开发语言·网络·自动化·php·ssl
HaSaKing_7212 小时前
EMQX 多机集群部署完整实践(Docker + 社区版 5.8.8)
运维·docker·容器·emqx
❀͜͡傀儡师3 小时前
Docker部署WebDB数据库开发环境
docker·容器·数据库开发
南山nash4 小时前
企业级docker镜像仓库harbor安装与使用
运维·docker·容器·镜像仓库
m0_485614674 小时前
Linux--Docker网络管理
linux·docker·eureka
云和数据.ChenGuang4 小时前
Logstash配置文件的**语法解析错误**
运维·数据库·分布式·rabbitmq·jenkins
飞飞传输4 小时前
守护医疗隐私,数据安全摆渡系统撑起内外网安全伞!
大数据·运维·安全
Guheyunyi4 小时前
视频安全监测系统的三大核心突破
大数据·运维·服务器·人工智能·安全·音视频
Jelly-小丑鱼5 小时前
Linux搭建SQLserver数据库和Orical数据库
linux·运维·数据库·sqlserver·oracal·docker容器数据库