Docker介绍

简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
https://baike.baidu.com/item/%E6%B2%99%E7%AE%B1/393318 沙箱
组成
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器对象
镜像

Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

使用
机器资源有限;
单台机器得部署多个应用;
应用之间互相隔离;
应用之间不能发生资源抢占,每个应用只能使用事先注册申请的资源。
1.2.2一次编译,到处运行
类似于java代码,应用及依赖的环境构建一次,可以到处运行。

为什么要使用docker
1、快速交付应用程序
开发者使用一个标准的image来构建开发容器,开发完成之后,系统管理就可以使用这个容器来部署代码
docker可以快速创建容器,快速迭代应用程序,并让整个过程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。
docker容器很轻!很快!容器的启动时间是次秒级的,节约开发、测试、部署的时间
2、更容易部署和扩展
docker容器可以在几乎所有的环境中运行,物理机、虚拟机、公有云、私有云、个人电脑、服务器等等。
docker容器兼容很多平台,这样就可以把一个应用程序从一个平台迁移到另外一个。
3、效率更高
docker容器不需要hypervisor,他是内核级的虚拟化。
4、快速部署也意味着更简单的管理
通常只需要小小的改变就可以替代以往巨型和大量的更新工作。
5.保证了线上线下环境的一致性
我们在线下的开发环境使用Docker构建好weaapp的镜像后,可以直接在线上使用一个镜像,保证了线上线下环境的一致性,再也不会有在线下开发环境中运行正常,而部署到线上各种错误了。
6.极大的简化了webapp的部署流程
在不使用Docker时,我们部署app时,要先搭建好app运行所需环境,这个过程做过的人都知道多么枯燥繁琐,一不小心还出错。而有了Docker,我们只需要直接构建一个我们webapp的镜像然后将其运行即可,无论在多少台服务器中部署,都是如此。再比如,使用Docker之前要搭建一个WordPress对于新手来说是有些困难的,而有了Docker,只需要从DockerHub上pull一个WordPress镜像并启动就可以了,非常非常方便。
7.实现了沙盒机制,提高了安全性
由于webapp运行在容器中,与操作系统隔离开了,从而使操作系统基本不可能受到破坏,另外如果webapp因为攻击而瘫痪,并不需要重启服务器,直接重启容器或者再启动一个镜像就可以了。
8.实现了模块化,提高了复用性
在二中使用Docker的第二种方式就可以看出,我们将数据库和Tomcat运行在不同的容器中,从某种角度来说,这也降低了模块之间的耦合性,便于拓展。比如我们要把MySQL替换为oracle,只需要再构建一个oracle镜像并启动与Tomcat连接即可,非常方便。对于我们构建的镜像,在其他app中直接拿来用就可以了,不必重复劳动。
9.实现了虚拟化,提高硬件利用率
有了Docker,我们可以在一台服务器上运行很多webapp,充分利用闲置资源。这时候,服务器的操作系统就类似于货轮,而一个个Docker容器就相当于货轮上的一个个集装箱。现在大热的云服务市场,不少就用了Docker。举个例子来说,现在我们有一台操作系统为Ubuntu14.04的服务器,我们构建不同版本的ubuntu镜像并启动,并且为不同的用户分配不同的容器。这样,用一台服务器
可以虚拟出n个运行着不同操作系统的虚拟服务器,而对于用户来说,这些是透明的––用户则认为自己拥有一台完整的服务器。据我推测,阿里云的服务器就是这么干的。这充分利用了闲置的硬件资源。

https://www.docker.com/ 官网
https://hub.docker.com/ 仓库

https://hub.docker.com/repositories 个人仓库 chosenfl/fl*********

原理解读
容器有效的将单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。
  与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。
  简而言之就是,Docker是一个盒子,一个盒子装一个玩具,无论你丢在哪里,你给他通电(glibc),他就能运行。你的玩具大就用大盒子,小玩具就用小盒子。 两个应用之间的环境是环境是完全隔离的,建立通信机制来互相调用。容器的创建和停止都十分快速(秒级),容器自身对资源的需求十分有限,远比虚拟机本身占用的资源少。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独孤飞磊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值