Docker简介

Docker是一个基于LXC技术的Container容器引擎,提供镜像和Dockerfile等功能。它将应用及其依赖打包在可移植容器中,可在任意Linux发行版上运行。Docker采用C/S架构,由Docker daemon管理容器,利用LXC、Cgroups和NameSpace实现资源隔离和限制。其优点包括快速启动、轻量级和高性能,对比虚拟机,容器更节省资源但安全性相对较低。

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

一、什么是Docker?
Docker时Docker.Lnc公司开源的一个基于LXC(Linux Container)技术之上搭建的Container容器引擎。提供一系列更强的功能,比如镜像、Dockerfile等。源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
Docker属于Linux容器的一种封装,Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意Linux发行版Docker引擎上。
Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。

在这里插入图片描述

二、Docker的架构
Docker采用C/S架构,Dcoker daemon作为服务端接受来自客户端请求,并处理这些请求,比如创建、运行容器等。客户端为用户提供一系列指令与Docker daemon交互。
在这里插入图片描述

Docker功能
docker 客户端(client)docker客户端通过命令行形式与docker守护进程通信
docker 主机(host)一个物理或虚拟机用于执行docker进程和容器
docker仓库(registry)docker仓库用来存放镜像

三、Docker的组件
LXC:
Linux容器技术,共享内核,容器共享宿主机资源,使用namespace和cgroups对资源限制于隔离。

Cgroups(control groups):
Linux内核提供的一种限制单进程或多进程资源的机制。例如:CPU、内存等资源的使用限制。

NameSpace:
命名空间,Linux内核提供的一种限制进程或者多进程资源隔离机制,一个进程可以属于多个命名空间。Linux提供了6种NameSpace:UTS、IPC、PID、Network、Mount、User。

NAMESPACE功能
UTS提供主机名,域名的隔离能力
IPC提供进程之间通信、消息内存的隔离能力
PID提供进程间隔离的能力
Network提供网络隔离能力
Mount提供磁盘挂载点和文件系统的隔离能力
User提供用户、用户组隔离的能力

AUFS(advanced multi layered unification filesystem):
高级多层统一文件系统,是UFS的一种,每个branch可以指定readonly(ro只读)、readwrite(读写)和whiteout-able(wo隐藏)权限;一般情况下,aufs只有最上层的branch才有读写权限,其他branch均为只读权限。

UFS(UnionFS):
联合文件系统,支持将不同位置的目录挂载到同一虚拟文件系统,形成一种分层的模型;成员目录称为虚拟文件系统的一个分支(branch)。

四、Docker的优点

Docker的优点详解
持续集成在项目快速迭代情况下,轻量级容器对项目快速构建、环境打包、发布等流程就能提高工作效率。
版本控制每个镜像就是一个版本,在一个项目多个版本时可以很方便管理。
可移植性容器可以移动到任意一台Docker主机上,而不需要过多关注底层系统
标准化应用程序环境及依赖、操作系统等问题,增加了生产环境故障率,容器保证了所有配置、依赖始终不变。
隔离性和安全性容器之间的进程是相互隔离的,一个容器出现问题不会影响其他容器。

五、虚拟机与容器区别

KVM、VMware
硬件–》操作系统–》hypevisor–》--VM(guest OS、app)

Docker
硬件–》操作系统–》docker engine(docker引擎)–》container(app)
在这里插入图片描述
KVM、VMware:完整的操作系统
Docker:容器只包含了 文件系统级、内核、物理资源的调度:

启动时间:
Docker秒级别、KVM分钟级。

轻量级:
容器景象大小通常用M为单位、虚拟机以G为单位。
容器资源占用小、要比虚拟机部署更快。

性能:
容器共享的宿主机的内核、系统级虚拟化,占用资源少、没用hypervisor层开销,容器性能基本接近物理机。
虚拟机需要hypevisor层支持,虚拟化一些设备,具有完整的GuestOS(虚拟机操作系统),虚拟机开销大,因此降低性能,没有容器新能好。

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

使用要求:
KVM基于硬件的完全虚拟化,需要硬件cpu虚拟化技术支持。
容器共享宿主主机内核,可以运行在主流的Linux发行版本,不需要考虑cpu是否支持虚拟化技术。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值