更多精彩内容,欢迎关注:

视频号
视频号

抖音
抖音

快手
快手

微博
微博

docker原理

导读Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。

docker原理是什么,让我们一起了解一下?

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

一个完整的Docker有以下几个部分组成:

DockerClient客户端

Docker Daemon守护进程

Docker Image镜像

DockerContainer容器

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同, LXC 其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化到docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。

用户需要考虑虚拟化方法,尤其是硬件虚拟化方法,需要借助其解决的主要是以下4个问题:

隔离性 - 每个用户实例之间相互隔离, 互不影响。 硬件虚拟化方法给出的方法是VM, LXC给出的方法是container,更细一点是kernel namespace

可配额/可度量 - 每个用户实例可以按需提供其计算资源,所使用的资源可以被计量。硬件虚拟化方法因为虚拟了CPU, memory可以方便实现, LXC则主要是利用cgroups来控制资源

移动性 - 用户的实例可以很方便地复制、移动和重建。硬件虚拟化方法提供snapshot和image来实现,docker(主要)利用AUFS实现

安全性 - 这个话题比较大,这里强调是host主机的角度尽量保护container。硬件虚拟化的方法因为虚拟化的水平比较高,用户进程都是在KVM等虚拟机容器中翻译运行的, 然而对于LXC,用户的进程是lxc-start进程的子进程, 只是在Kernel的namespace中隔离的, 因此需要一些kernel的patch来保证用户的运行环境不会受到来自host主机的恶意入侵, dotcloud(主要是)利用kernel grsec patch解决的。

以上就是小编的分享,希望可以帮助到大家。

为你推荐
资讯专栏
热门视频
相关推荐
卸载docker 删除docker镜像 ui设计全称 什么叫ui设计 需要学什么 ui专业是什么专业 ui设计是什么 ui和视觉设计的区别 ui设计和视觉设计的不同 ui设计是什么 包括哪些 分为几个方面 ui设计师要懂什么 ui设计师需要掌握什么 ui和gui的区别 什么是ui 什么是gui docker cp怎么用 docker cp如何用 如何查看docker日志 怎样查看docker日志 docker查看日志命令 docker如何查看日志命令 docker有自己的防火墙吗 docker有防火墙吗 docker怎么用 docker如何用 关于风筝的好的歌赋诗词 js中toString方法的3个作用 python绘图中四个绘图技巧 夕阳无限好只是近黄昏是哪位诗人写的 docker的好处 docker的好处是什么 西湖诗词名句全诗西湖美景 js中toString方法有几个作用 docker工具 网络工程师怎么获得 如何考取网络工程师 你知道什么是ui框架吗 ui框架排行 ui学什么的 学习ui需要了解什么 什么叫ui界面设计 你真的了解吗 ui主要是干什么 ui的工作都有哪些 网络工程师要考些什么 网络工程师需要考英语吗 网络工程师要学系统吗 思科网络工程师证书报名条件 为什么要成为网络工程师 思科网络工程师证书有哪些 网络工程师证书有几种 华为认证网络工程师方向 网络工程师怎么学 网络工程师怎么学 网络工程师如何学 hcia和软考网络工程师区别 电子商务和网络工程师哪个好 初级网络工程师怎么考中级 网络工程师必须要学历吗 网络工程师如何考 网络工程师怎么考
Top