泛谈Docker

本文深入解析Docker的工作原理,包括其容器化技术、架构组成及与虚拟机的区别。同时,阐述了Docker Compose在多容器应用编排中的作用,并详细介绍了持续集成(CI)与持续部署(CD)的流程,包括Jenkins如何与Git仓库配合实现自动化构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有影响。


Docker与虚拟机的区别:


传统虚拟化是站在硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运行环境。人称硬件虚拟化。

而Dokcer则是站在操作系统的基础上进行虚拟,显然Dokcer轻量得多,因此其资源占用、性能消耗相比传统虚拟化都有很大优势。人称操作系统层虚拟化。


二、Docker属于C/S架构,是由client客户端、daemon守护进程、image镜像、container容器组成

①镜像与容器的区别:

镜像可以理解为一堆静态的文件,拥有一个或多个只读层。

容器则是镜像run起来之后的一个实例。镜像之于容器就好比面向对象编程里的class之于object。容器=镜像+读写层

一个镜像可创建多个容器,每个容器都有各自的一个可读写层。



②在容器上进行的各种骚操作,会随着容器的销毁而销毁,可使用commit命令来保存,但更推荐使用Dockerfile定制镜像。

commit命令和Dockerfile详解


③容器上的数据以及文件,也会随着容器的销毁而销毁,可使用数据卷和目录挂载来保存。

数据卷和目录挂载详解


三、docker-compose(它还有兄弟:Machine、Swarm[集群])

Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器, Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用容器,非常适合组合使用多个容器进行开发的场景。

来看个栗子

官方quickstart-WordPress


四、CICD

Continuous Integration vs. Continuous Delivery vs. Continuous Deployment
持续集成、持续交付、持续部署

这里讲一下持续集成,顺了两张图:


大致步骤:

①程序猿更新代码到git远程仓库

②Jenkins与git仓库配置有webhook,Git webhook会触发Jenkins服务器自动构建。(webhook与异步编程中"订阅-发布模型"非常类似,一端触发事件,一端监听执行。)

③Jenkins会拉取git仓库某个分支下的最新代码,使用maven插件进行项目构建。

④构建成war包利用ssh插件发送到docker服务器

⑤Jenkins中的构建触发器执行自定义的shell脚本,war包结合Dockerfile定制成docker镜像

⑥run image、push image、邮件通知


推荐一个搭建CI demo(git+docker+maven+registry+jenkins)


当然基于强大的Jenkins插件库,可随项目情况定制合适的CI,成熟

的方案还应该有自动化单元测试、集成测试、端对端测试。

单元测试:针对函数或模块的测试 

集成测试:针对整体产品的某个功能的测试,又称功能测试
端对端测试:从用户界面直达数据库的全链路测试





转载于:https://juejin.im/post/5be3963de51d4537493b45fa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值