news 2026/9/21 16:06:37

Docker 生产环境容器化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 生产环境容器化

场景 1:上线发布(创建+启动合并,后台运行)

任务 1.1:用 nginx 镜像创建并启动容器(后台运行)

要求:

  • 容器名:web-prod-01

  • 端口映射:宿主机43000映射容器80

  • 后台运行:必须使用-d

结果:

场景 2:基础操作(创建、启动、停止、查看)

任务 2.1:使用 docker create 创建容器(默认停止)

要求:

  • 使用docker create -it nginx:latest /bin/bash(或按你环境可用镜像)

  • 证明容器状态是Created

提交证据:

  • docker ps -a输出(状态为 Created)

任务 2.2:启动该容器并查看状态

提交证据:

  • docker start <容器ID或名称>命令

  • docker ps -a输出(状态为 Up 或 Exited 需解释原因)

任务 2.3:停止容器

  • docker stop <容器ID或名称>

  • docker ps -a输出(状态为 Exited)

任务 3.1:进入 web-prod-01 容器执行命令

要求进入容器执行:

  • ls

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

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

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

要求:

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

  2. 复制到容器/opt/目录

任务 4.2:从容器复制回宿主机

要求:

  • 从容器复制/opt/test.txt到宿主机~/abc123.txt

场景 5:容器迁移(导出与导入)

任务 5.1:导出容器为 tar 包

要求:

  • 导出web-prod-01web-prod-01.tar

任务 5.2:导入 tar 包生成新镜像

要求:

  • 镜像名:web-import:test

说明题(必答):export/importsave/load有什么区别?(写 3 句话以内)

export/import 操作的是容器

save/load操作的是镜像

export丢弃镜像历史,save保留完整层信息;

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

任务 6.1:删除指定容器

要求:

  • 停止并删除web-prod-01

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

任选提交一种:

  1. docker stop $(docker ps -q)

  2. docker ps -a | awk ... | xargs docker stop

任务 6.3:删除所有容器

任选提交一种:

  1. docker rm -f $(docker ps -aq)

  2. docker ps -a | awk ... | xargs docker rm

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

任选一种:

  1. 删除所有镜像:docker rmi -f $(docker images -q)

  2. 只删除 none 镜像:docker images | grep none | ...

安全说明(必答): 为什么生产环境不建议直接执行“删除所有容器/镜像”?写出 2 点原因。

误删正在运行的业务容器,导致服务中断

镜像可能是其他容器依赖的基础 导致后续部署失败

三、网络部分


Docker 网络模式场景化作业

实验说明

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

  • 镜像建议:nginxcentos:7

  • 禁止使用--network none

  • 每个场景必须执行命令并给出验证结果


场景一:bridge 模式(默认模式)——Web 服务对外发布

场景背景(生产化)

公司在一台服务器上部署多个 Web 服务,需要:

  • 容器之间相互隔离

  • 对外通过端口映射提供服务

这是最常见的生产 Docker 网络模式

任务 1.1:使用 bridge 模式运行 nginx

任务 1.2:查看容器 IP

思考题(必答)

1️⃣ 为什么外部不能直接访问容器 IP? 2️⃣ bridge 模式下端口映射的作用是什么?

①Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器

② 将宿主机端口转发到容器端口。使得外部可通过宿主机IP访问服务


场景二:host 模式——高性能服务部署

场景背景(生产化)

公司部署一个高性能 Web 服务/监控服务

  • 对网络性能敏感

  • 不希望端口映射带来额外开销

因此直接让容器使用宿主机网络。


任务 2.1:使用 host 网络模式启动 nginx

①host模式下,容器有没有独立ip

答:host模式下容器没有独立 IP,共享宿主机的ip和端口

②host模式下适合什么类型的应用

适合高性能、低延迟应用

③host 模式的安全风险是什么?

容器直接暴露宿主机端口 ,无网络隔离,容易收到攻击

场景三:container 模式——紧密耦合服务(Sidecar)

场景背景(生产化)

某系统由两个组件组成:

  • 主服务(Service)

  • 辅助服务(日志/监控/代理)

要求:

  • 两个容器共享网络

  • 使用localhost通信

任务 3.1:启动主容器

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

任务 3.3:启动共享网络的辅助容器

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

1️⃣ container 模式与 host 模式的区别?

container 模式 共享另一个主机容器的命名空间 host共享主机

2️⃣ 为什么称这种模式为 Sidecar(边车模式)?

辅助容器像边车一样依附于主容器 共享网络、日志等资源,为核心服务提供辅助功能(如日志收集、代理)。

场景四:自定义 bridge 网络——多容器系统与固定 IP

场景背景(生产化)

公司部署一个多服务系统:

  • Web + App + DB

  • 需要:

    • 容器间直连

    • 可指定 IP

    • 网络与其他项目隔离


任务 4.1:创建自定义网络

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

任务 4.3:容器间通信测试


1️⃣ 为什么默认 bridge 不能指定 IP?

默认 bridge 网络未启用固定 IP 分配功能,自定义网络支持手动指定子网和 IP

2️⃣ 自定义网络适合什么场景?

bridge 单机网络模式适合在一台宿主机 内容器互联

overlay 跨主机容器互联 docker swarm

macvlan 容器像一台物理机一样 直接获取宿主机的所在的网络的IP

3️⃣ Docker 如何实现容器间二层通信?

二层通信本质是基于数据链路层(MAC 地址)的通信,Docker 主要通过 网络命名空间、虚拟网络设备(veth pair)、网桥(docker0 / 自定义网桥)三大核心组件协同实现

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 22:13:49

Mac免费NTFS读写工具完全使用指南

Mac免费NTFS读写工具完全使用指南 【免费下载链接】Free-NTFS-for-Mac Nigate&#xff0c;一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh_mirrors/fr/Free-NTFS-for-Mac 还在…

作者头像 李华
网站建设 2026/9/22 2:10:30

植物大战僵尸修改器:让你的游戏体验瞬间升级

还在为阳光不够用而烦恼吗&#xff1f;想不想体验无限金币的畅爽&#xff1f;植物大战僵尸这款经典游戏&#xff0c;有了合适的辅助工具&#xff0c;玩法能变得多么丰富有趣&#xff01;今天就来聊聊这款备受玩家喜爱的修改器——PVZ Toolkit&#xff0c;看看它是如何让我们的游…

作者头像 李华
网站建设 2026/9/21 3:20:28

LangFlow技术峰会预告:年度最大规模开发者聚会

LangFlow技术峰会预告&#xff1a;年度最大规模开发者聚会 在AI应用开发日益复杂的今天&#xff0c;如何让一个创意从灵感到落地的时间压缩到以小时计&#xff1f;这曾是许多团队梦寐以求的目标。而随着大语言模型&#xff08;LLM&#xff09;生态的成熟&#xff0c;尤其是Lang…

作者头像 李华
网站建设 2026/9/21 14:15:09

x64dbg动态分析Windows程序完整指南

用x64dbg揭开Windows程序的“黑箱”&#xff1a;从入门到实战的动态分析全路径 你有没有遇到过这样的场景&#xff1f; 一个闭源软件拒绝运行在你的系统上&#xff0c;提示“非法授权”&#xff1b;一段恶意代码像幽灵一样绕过杀软&#xff0c;却不知道它何时解密 payload&…

作者头像 李华
网站建设 2026/9/22 1:19:05

全面讲解CCS使用调试功能:断点与变量查看

深入掌握CCS调试利器&#xff1a;断点与变量监控实战全解析在嵌入式开发的世界里&#xff0c;代码写完只是开始&#xff0c;真正决定项目成败的&#xff0c;往往是调试环节的效率和深度。尤其是在工业控制、电机驱动、数字电源等对实时性要求极高的领域&#xff0c;一个微小的逻…

作者头像 李华
网站建设 2026/9/21 5:15:02

LangFlow REST API接口文档说明

LangFlow REST API 接口文档说明 在当前 AI 应用快速迭代的背景下&#xff0c;如何高效地构建、调试并部署基于大语言模型&#xff08;LLM&#xff09;的工作流&#xff0c;已经成为研发团队面临的核心挑战。传统方式依赖大量 Python 代码编写 LangChain 链式调用&#xff0c;不…

作者头像 李华