讲师中心 微信公众号
AI工具推荐 视频效率加速

Docker是什么_Docker在DevOps中的作用

陌晨吖_4876

陌晨吖_4876

发布时间:2026-02-07 14:06:45

|

984人浏览过

|

来源于php中文网

原创

Docker是运行时容器引擎,核心价值在于让应用运行可重复、可验证、可移交、可回滚;关键实践包括分层构建优化缓存、CI中禁用端口映射、生产环境必须用编排工具、镜像需扫描漏洞并固定基础镜像标签。

docker是什么_docker在devops中的作用

Docker 是一个运行时容器引擎,不是虚拟机,也不是部署平台本身——它把应用和它的依赖(库、配置、环境变量、甚至内核模块兼容性要求)打包成一个可执行的、带版本的镜像,然后在宿主机上隔离运行这个镜像的实例(即容器)。 它在 DevOps 中真正起作用的地方,从来不是“让程序跑起来”,而是**让“跑起来”这件事变得可重复、可验证、可移交、可回滚**。下面说几个关键实操点。

为什么 Dockerfile 里不能写 RUN npm install 而要拆成 COPY package.json + RUN npm install

这是构建缓存失效最典型的坑。Docker 构建是分层的,每一行 RUN、COPY 都可能生成一层缓存。如果把 npm install 放在最后,只要源码任意一行变了,整个安装过程就得重来——CI 流水线动辄多花 3–5 分钟。

  • 正确顺序:COPY package.json . → RUN npm install → COPY . .
  • 这样改了 JS 文件不会触发重装依赖,只重建最上层;改了 package.json 才重装
  • 同理适用于 pip install -r requirements.txt、go mod download 等场景

测试阶段用同一镜像,但别在 CI 里 docker run -p 8080:8080

很多团队在 Jenkins 或 GitLab CI 里直接 docker run 启服务再跑集成测试,结果发现端口冲突、容器没清理、日志捕获困难——这不是 Docker 的错,是误用了运行模型。

arcgis-js
arcgis-js

提供 ArcGIS Maps SDK for JavaScript 开发辅助,涵盖 2D/3D 地图视图、图层管理、数据可视化、空间分析等功能模块的参考和示例指导。

下载
  • CI 中应使用 docker run --rm -i 启动,并确保测试套件能通过 HTTP/IPC 连上容器(比如用 localhost:3000)
  • 禁止映射宿主机端口(-p),因为并发任务会抢端口;改用 --network host 或容器内网通信(如 curl http://app:8080/health)
  • 测试完必须加 --rm,否则失败任务残留容器,占资源还污染后续构建

生产环境里 docker run 只能当临时调试命令,上线必须用编排工具

有人把 docker run -d --restart=always 当成上线方案,短期能跑,但很快会遇到:怎么扩缩容?配置怎么热更新?日志怎么集中收集?健康检查挂了谁来拉起?

  • 哪怕只有单节点,也该用 docker-compose.yml 管理启动参数、网络、卷、健康检查
  • 跨节点或需高可用,必须上 Kubernetes 或至少 Docker Swarm;否则运维成本指数级上升
  • 特别注意:K8s 的 livenessProbe 和 readinessProbe 必须基于容器内真实进程状态,不能只 ping 端口

镜像推送前不扫描,等于把漏洞打包发到生产

你本地 docker build 成功,不代表安全。基础镜像含已知 CVE、应用依赖带高危漏洞、甚至构建中间层残留了密钥——这些都不会报错,但会在生产环境爆发。

  • CI 流水线中必须插入镜像扫描步骤,例如:trivy image --severity CRITICAL myapp:latest
  • 拒绝使用 FROM ubuntu:latest 或 node:alpine 这类无固定 tag 的镜像,它们每天都在变,破坏可重现性
  • 推荐用 distroless 镜像(如 gcr.io/distroless/nodejs)减少攻击面,但要注意调试工具缺失带来的排障成本
DevOps 不是靠工具堆出来的,Docker 也只是其中一环。最容易被忽略的,其实是「镜像生命周期管理」:谁负责打标签?哪个 tag 对应哪个 Git commit?镜像过期后怎么清理?这些事没人定义清楚,再好的容器化也会退化成另一套手工运维。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

519

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

616

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1196

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

791

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1766

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

5014

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

2314

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

4206

2025.06.17

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
快速入门Node.JS全套完整版
快速入门Node.JS全套完整版

共83课时 | 13.6万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.9万人学习

JavaScript设计模式视频教程
JavaScript设计模式视频教程

共28课时 | 6.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn