docker架构和底层技术

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文连接地址:『中级篇』docker架构和底层技术(12)linux

前11节主要是介绍docker的安装,若是跟这我来学我相信你们已经有了一个docker的安装环境,本次是看下docker的架构和底层的技术,其实随着各位老铁的学习我相信对于docker架构和底层技术会愈来愈深刻的了解,特别是底层技术,后面会边用边给你们介绍底层的linux的技术。ios

Docker平台

  • Docker提供了一个平台,打包,运行的app的平台
  • 把application和底层的infrastructure(基础建设)隔离开来

Docker Engine

  1. 最核心的是 Docker Daemon咱们称之为Docker守护进程,也就是Server端,Server端能够部署在远程,也能够部署在本地,由于Server端与客户端(Docker Client)是经过Rest API进行通讯。
  2. REST 作过web开发都了解,它的效率杠杠的。
  3. docker CLI 实现容器和镜像的管理,为用户提供统一的操做界面,这个 客户端提供一个只读的镜像,而后经过镜像能够建立一个或者多个容器。(container),这些容器能够只是一个RFS(Root File System),也能够是一个包含了用户应用的RFS。容器在docker Client中只是一个进程,两个进程是互不可见的。用户不能与server直接交互,但能够经过与容器这个桥梁来交互,因为是操做系统级别的虚拟技术,中间的损耗几乎能够不计。
  4. 其实docker就是个C/S的架构,有client和server的。
  • Docker守护进程(dockerd)
  • REST API server
  • CLI接口

Docker的组织架构


Docker的底层技术支持

容器=cgroup+namespace+rootfs+容器引擎(用户态工具LXC)git

  • Cgroup(资源控制)
  • Namespace(访问隔离)
  • rootfs(文件系统隔离)
  • 容器引擎(生命周期控制)


PS:这里面不少底层的技术,说实话,仍是感受不须要那么急着了解这些底层linux的技术,随着我们慢慢对docker深刻认识,里面的技术细节也会展开深刻的的说。github

Docker瞎扯淡

有初学者还在问,docker都出了这么多课程了,可否通俗易懂的说下,我就在baidu找了一些内容分享出来,文章也是转载的,写的互联网。web

首先你有一个 100 平方的房子(服务器),已知你(PHP 应用)须要吃喝拉撒睡觉,因此整个房子划分了卧室、厨房、卫生间等,而后供你一我的享用,但其实挺浪费的,你一我的并不须要 100 平方这么大,可能须要 20 平方(服务器占用 20%)就行了。docker

后来又来了个别人(Java 应用)也被安排到了这个房子里生活,他也须要吃喝拉撒睡,因此大家挤在了一个床上,用一个卫生间(好比 http 服务器)。若是你改了你的习惯(例如 http 服务配置项)一样会影响别人的生活。bash

后来又来了人(Node 应用),这时候房东发现房子不够大了,因此搬家(迁移、升级服务器)到另外一个 150 平的房子,可是搬家成本好高。因为户型不一样(系统版本、环境等)须要装修很久,此外还要把住户(应用代码)搬过来,还须要把住户自定义的习惯都带过来简直麻烦死了。服务器

这时候,房东了解到了一个叫 Docker 的产品。架构

Docker 是一个可自由伸缩的集装箱房屋:app


这个集装箱房屋虽小可是五脏俱全,并且能够知足一切用户需求,并支持高度自定义,好比 Node 这位住户不须要厨房,那么他的集装箱房子就小一点,固然房租(服务器消耗)也便宜一些。

房东用了 Docker 这个产品以后,发现租房这个事情变简单了:

  • 房东不须要划分卫生间、厨房、卧室并进行装修了,一切由用户本身定制集装箱。房东只须要把集装箱放到房间里便可。
  • 住户也不须要打架了,之前一块儿付房租(消耗服务器资源),如今按照本身集装箱大小付费。并且你能够在你集装箱里面随便折腾,爱怎么改配置就怎么改,也不会影响到别人。
  • 集装箱对于空间的使用,更加直观,房东能够更轻松了解到当前房间的空间使用率等,以便升级房间。
  • 房东搬新家的时候也开心了,只要把一面墙炸开,把里面一个个集装箱直接移过去新房子就行了,啥也不须要配置,都在集装箱里面呢。

扯完了:

  • 你就是房东,作运维的。房间是服务器,空间大小表示服务器硬件配置。
  • 住户就是你的业务、应用,提供服务的。
  • 伸缩集装箱房屋,就是 Docker 容器,里面是彻底分离、独立、自由的环境和业务代码。你能够在里面装一个 Ubuntu(消耗大)或者简版的、能够跑业务代码的环境(消耗低)。
  • Docker 抹平系统差别,至关于把你多个房间都砸成长方形方便存放集装箱。这样你能够快速把独立容器丢到各个配置了 Docker 的不一样系统、硬件配置的服务器上面。
  • 所以也能够获得很高的伸缩性,能够瞬间部署不少服务器不少容器,而后负载均衡来提供大促服务等。
  • 固然 Docker 概念、功能不仅是我上面说的这些,这些只是我认为比较核心关键的。

开始新的征程

源码的路径:github.com/limingios/d…

  • 目录结构:

vagrant plugin install vagrant-vbguest
vagrant reload --provision
vagrant up
复制代码



建立完毕

#进入虚拟机
vagrant ssh
sudo docker version
复制代码


我的网站:IT人故事会 idig8.com
PS:开始实践了,欢迎你们持续关注。

image
相关文章
相关标签/搜索