Docker系列一:初识docker

Docker是一种轻量级的容器技术,它通过Linux内核的namespace、CGroups和UnionFS实现进程隔离和资源限制。相比传统虚拟机,Docker启动速度快、占用资源少,提供了一致的运行环境,简化了软件部署和迁移。Docker的应用场景包括快速部署、环境一致性、持续集成、微服务和弹性伸缩。

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

目录

一:什么是 Docker

二:为什么选择Docker

2.1:启动速度快

2.2:轻量级

2.3:更高效利用系统资源

2.4:安全性高

2.5:使用门槛低

2.6:一致的运行环境,更轻松的迁移

三:Docker容器与传统虚拟机的区别比较

四:Docker体系结构

五:Docker内部核心组件

5.1:namespace

5.2:CGroups

5.3:UnionFS

六:Docker应用场景

场景一:节省项目环境部署时间

场景二:环境一致性

场景三:持续集成

场景四:微服务

场景五:弹性伸缩


一:什么是 Docker

        Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。

        由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。

        Docker早期版本实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd。

        Docker的理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。使用沙箱机制运行程序。程序之间相互隔离。

        Docker的容器设计原则:一个容器一个服务,容器之间相互隔离

二:为什么选择Docker

2.1:启动速度快

        Docker秒级启动,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。

        虚拟机分钟级启动

2.2:轻量级

        Docker镜像大小通常以M为单位,虚拟机以G为单位(以centos系统为例,docker镜像200M而虚拟机需要好几个G)

        容器资源占用小,要比虚拟机部署更快速。

2.3:更高效利用系统资源

        容器共享主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,容器性能基本接近物理主机;

        虚拟机需要Hypervisor层支持,虚拟化一些设备,具备完整的GuestOS,虚拟化开销大,因而降低性能,没有容器性能好。

2.4:安全性高

        由于共享宿主机内核, 只是进程级隔离,因此隔离性和稳定性不如虚拟机,容器具有一定权限访问宿主机内核,存在一定安全隐患。还有docker防火墙的问题

2.5:使用门槛低

        虚拟机基于硬件的完全虚拟化,需要硬件CPU虚拟化技术支持;

        容器共享宿主机内核,可运行在主流的Linux发行版,不用考虑CPU是否支持虚拟化技术。

2.6:一致的运行环境,更轻松的迁移

        开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现「这段代码在我机器上没问题啊」 这类问题。

三:Docker容器与传统虚拟机的区别比较

        传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;

        容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

特性

容器

虚拟机

启动

秒级

分钟级

硬盘使用

一般为MB

一般为GB

性能

接近原生

弱于

系统支持量

单机支持上千个容器

一般为几十个

四:Docker体系结构

        通过下图可以得知, Docker 在运行时分为 Docker 引擎(服务端守护进程)客户端工具 ,我们日常使用各种 docker 命令 ,其实就是在使用 客户端工具 与 Docker 引擎 进行交互

         Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端,守护进程从客户端接受命令并管理运行在主机上的容器

五:Docker内部核心组件

5.1:namespace

        命名空间,Linux内核提供的一种对进程资源隔离的机制,例如进程、网络、挂载点等资源。

5.2:CGroups

        控制组,Linux内核提供的一种限制进程资源的机制;例如CPU、内存等资源。

5.3:UnionFS

        联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型。

六:Docker应用场景

场景一:节省项目环境部署时间

        1:单项目打包

        2:整套项目打包

        3:新开源技术试用

场景二:环境一致性

场景三:持续集成

场景四:微服务

场景五:弹性伸缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iwester

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值