-
docker是什么
2018-02-16 02:01:02docker的第一篇博客应该是一个通俗易懂的扫盲贴。...本篇博文为大家介绍为什么需要docker这样一个东西,以及docker是什么。通过IT发展遇到了什么、docker又是如何去解决的,从而来阐述docker的作用。docker的第一篇博客应该是一个通俗易懂的扫盲贴。
本篇博文为大家介绍为什么需要docker这样一个东西,以及docker是什么。通过IT发展遇到了什么、docker又是如何去解决的,从而来阐述docker的作用。
关于docker是什么,官方的解释是:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
看上去是不是有点懵逼,下面用通俗的语言去阐述docker是什么,有什么用。
场景模拟:物品运输
举这么一个简单的例子:比如你有一堆东西要从A运到B(在没有集装箱的情况下),包括衣服、书、水果、颜料、化学物品;你需要考虑哪些问题?
1、由于他们的形状各不相同,在没有集装箱的情况下,你可能要考虑他们的摆放顺序,如多汁水果不要被重物压坏。--------------类比:避免服务对资源的过度抢占。
2、运输批次的问题,因为某些货物可能不宜放在一起,如水果和化学物品最好能装不同的车---------------------类比:资源的隔离,防止冲突
3、运输工具转变后可能要遇到重新摆列的问题,因为货车、飞机、轮船的仓储结构是不尽相同的。--------------------类比:代码运行环境的依赖,代码的移植
对应地,在软件开发环境中,开发、测试、运维人员不得不考虑以下因素,docker也恰恰解决了这些问题
1、 资源数额的抢占
如何避免服务/程序/进程占用过量的资源,影响物理机上的其他的程序。docker利用cgroup机制来实现资源限制、优先级分配、资源统计、任务控制等功能;通俗地讲就是我们可以利用docker来控制服务所能够调动的资源,docker好比一个箱子,我们把服务装到箱子里,你可以去控制这个箱子有多大,来决定服务能用多少资源;
2、 资源的隔离,避免保证进程/服务之间资源冲突
同一台宿主机上可能会运行多个程序,这些程序可能有不同的依赖环境,要让他们在宿主机中共存可能会很麻烦;比如IIS和Apache访问端口可能会冲突,此时你可能就需要去隔离.net和PHP所开发的网站;你可以在物理机上创建虚拟机来实现隔离应用的需求,但是docker同样能胜任,而且比虚拟机所需要的资源要少得多。
3、 如何保证开发、测试、运维环境的一致性、代码的可移植性
可能开发环境用的是ubuntu、运维环境是centos、测试环境是windows(当然这种极端情况可能不多);但即使操作系统版本相同,想要保持共同的代码运行环境也是极难的。docker好比一个集装箱,我们可以把代码运行时所需要的库、依赖包等环境一起打包封装进docker,这样开发就可以把这个容器直接分发给测试、运维,他们只要在机器上运行docker就能获得与开发环境等价的运行环境。
除了以上三点,docker还有一些其他优势
1、 资源的利用率与启停速度更胜虚拟机
虚拟机需要在硬件之上单独运行一个虚拟化层,然后在虚拟机上单独建立操作系统;而docker未必有完整的操作系统,他是与宿主机共享内核的,因此在资源调度效率方面要优于虚拟机。但是对应的,隔离性会比虚拟机要差一些。
2、 开发、运维的逻辑职责更加清晰
容器技术使得开发人员只需要关心容器中运行的应用环境,运维人员只需要关注如何去管理容器,职责更加分明;docker使得开发环境与生产运行环境保持了一致性,减少“开发时一切正常,一定是运维的问题”的现象。
-
Docker 是什么
2017-11-27 20:16:20Docker 是什么1.Docker 是什么 20世纪60年代以前的海运,货物都放置在一起,很容易挤压受损。同时,不同的运输方式之间的转运也很麻烦,例如从码头和火车汽车转运卸货时。不同货物和不同交通工具之间的组合是一个...1.Docker 是什么
20世纪60年代以前的海运,货物都放置在一起,很容易挤压受损。同时,不同的运输方式之间的转运也很麻烦,例如从码头和火车汽车转运卸货时。不同货物和不同交通工具之间的组合是一个巨大的二维矩阵。海运界最后达成了一致,制定了国际标准集装箱来解决这个棘手的问题。所有货物都打包进集装箱互相隔离,所有交通工具都通过集装箱转运,极大地提供了运输的安全性和效率。
在软件开发中我们也经常碰到同样的问题,使用了各种各样技术框架的应用程序,从前端静态网站到后端数据库,从PHP到Java,以及多种多样的部署环境,从测试服务器到线上环境,从虚拟机到公有云等等。Docker,正是这个集装箱,而Docker的logo也的确是个集装箱。
docker是一个开源引擎,可以为任何应用创建一个轻量级的、可移植的、自给自足的容器,开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署
2.Docker与容器和虚拟机
很自然地我们会问,Docker跟虚拟机有什么区别啊?这个问题可以拆成两部分。因为Docker并不是什么完全独创的技术,而是属于很早便有了的容器技术,所以第一个问题就是容器与虚拟机的区别?同属于容器技术,Docker的兄弟姐妹还有Solaris Zones、BSD jails、LXC等。但Docker现在这么火,自然有它的独到之处,所以第二个问题就是Docker与其他容器的区别?
关于第一个问题比较简单,容器是一种轻量级的虚拟技术。它不像虚拟机那样具有一套完整的CPU、内存和磁盘,对操作系统有绝对的权限。容器和宿主主机共享内核,所有容器共享操作系统,在一台物理机上可以运行成百上千的容器。第二个问题稍麻烦一些,与LXC相比,Docker对配置进行了抽象,使应用在任何平台上的运行环境都一致。同时提供了版本控制、镜像托管等类似Git的现代化设施和生态圈。
- 加速本地开发:快速搭建好开发环境和运行环境。
- 自动打包和部署应用。
- 创建轻量级的私有Paas环境。
- 自动化测试和持续集成。
- 创建安全沙盒。
KVM, Virtualbox, Vmware是虚拟出机器,让每个实例看到一个单独的机器;而Docker是虚拟出操作系统,实现应用之间的隔离,让各个应用觉得自己有一个自己的操作系统,而且彼此之间隔离。
假设没有Docker,然后有进程1和进程2,它们的运行将类似下图,进程1和进程2共享kernel,它们是同一OS下2个进程,因此必须拥有不同PID,但是又共享网卡,共享IP地址,看到一样的根文件系统(不chroot的情况下)等,可以用Linux IPC手段进程间通信。
有Docker的情况下,假设进程1和进程2运行于不同的容器,那么进程1和进程2都觉得自己和对方没有半毛钱关系,都觉得自己拥有自己的根文件系统,自己的网卡等,然后进程1和进程2的PID还可以一样,比如假设2个都是100。但是,此100非彼100。
Virtualbox等虚拟机的思路则完全不一样,如果进程1和进程2运行于不同的虚拟机,则操作系统都是双份的,它们感觉自己在不同的虚拟电脑上面跑。
由于可见,Docker达到了类似虚拟机的效果,但是又没有虚拟机的开销,它虚拟的层次更加高。Docker不虚拟机器,仅仅虚拟应用的运行环境。
-
Docker是什么
2019-04-18 02:21:09Docker是一个开源项目诞生于2013年初,最初是dotCloud公司内部的一个业余项目,基于Google公司的Go语言实现,项目后来加入Linux基金会,遵从Apache2.0协议,项目代码在Github上维护。 Docker的目标是实现轻量级的...DockerDocker是一个开源项目诞生于2013年初,最初是dotCloud公司内部的一个业余项目,基于Google公司的Go语言实现,项目后来加入Linux基金会,遵从Apache2.0协议,项目代码在Github上维护。
Docker的目标是实现轻量级的操作系统虚拟化解决方案,Docker的基础是Linux容器
LXC
等技术,在LXC
基础上Docker做了进一步的封装,让用户不需要关心容器的管理,使得操作更为简便。用户操作Docker容器就像操作一个快速轻量级的虚拟机一样简单。什么是虚拟机呢?
虚拟机本质上是对现实计算机的仿真,它会像真机一样执行程序。使用虚拟机管理程序
hypervisor
可以将虚拟机运行在物理机上,也可以运行在裸机上。虚拟机管理程序本身在物理机(主机)上运行,主机为虚拟机提供资源,包括RAM和CPU。这些资源在虚拟机之间被划分并根据需要进行分配。如果一个虚拟机上运行了资源占用很大的应用程序,你可以相应地为它分配更多的系统资源。虚拟机什么是虚拟机管理程序
hypervisor
?由于虚拟机拥有自己的虚拟操作系统,管理程序为虚拟机管理和执行访问操作系统提供了一个平台,它允许主机与作为客户端运行的虚拟机之间共享其资源。
虚拟机管理系统什么是容器呢?
容器是通过抽象用户空间来提供操作系统级别的虚拟化,容器看起来像是一个虚拟机。它们有执行进程的私有空间,有专用的网络接口和IP地址,同样也可以挂载文件系统...
容器和虚拟机之间的一个重要的区别在于:容器和其它容器是共享主机系统的内核的。
容器Docker与传统虚拟化方式(虚拟机,VM)有什么不同之处呢?
Docker和VM-
传统虚拟机是在硬件层面实现虚拟化
传统虚拟化
虚拟机VM
是一个运行在宿主机之上的完整的操作系统,虚拟机运行自身操作系统时会占用较多的系统资源。系统虚拟化 -
Docker是在操作系统层面上实现虚拟化
Docker虚拟化Docker与VM不同的是,只包含应用程序与依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,使得Docker更加轻量且高效。
容器虚拟化Docker引擎是什么呢?
Docker引擎是一个C/S结构的应用,由三部分构成:
- Server
服务器docker daemon是一个常驻进程 - REST API
实现客户端与服务器之间的交互协议 -
CLI
客户端docker CLI命令行工具实现容器和镜像的管理为用户提供统一的操作界面Docker引擎
Docker的架构是什么样的呢?
Docker使用C/S架构,客户端通过接口与服务器进程通信以实现容器的构建、运行和发布。
-
Docker daemon
Docker守护进程运行在宿主机上,用户通过Docker客户端(docker cli)与之交互。Docker后台守护进程 -
Docker client
Docker客户端是一个命令行工具(CLI),是用户使用Docker的主要方式。Docker客户端与Docker服务器守护进程通信并将结果返回给用户,Docker客户端也可以通过socker或RESTful API访问远程的Docker daemon。Docker的C/S架构
Docker客户端和服务器可以运行在同一台集群,也可以通过跨主机实现远程通信。
Docker架构Docker的核心是什么呢?
Docker核心- 镜像
image
Docker镜像是一个只读的模板,是一堆只读层(read-only layer)的统一视角。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。Docker提供了一个简单的机制来创建镜像或更新镜像,用户甚至可以直接从其他人哪里下载一个已经做好的镜像来直接使用。镜像
镜像是容器的基石,镜像保存了启动容器的条件,容器基于镜像的启动而运行。Docker镜像是一个层叠的只读文件系统,最底端是一个引导文件系统和bootfs。用户永远不会和引导文件系统有交互,实际上当容器启动后,bootfs会被移到内存中,而引导文件将被卸载。
镜像Docker镜像的第二层是root文件系统
rootfs
,位于引导文件系统之上,可以有多种操作系统。- 仓库
repository
仓库是集中存放镜像的场所,仓库分为公开仓库(public)和私有仓库(private)两种形式,最大的公开仓库是Docker Hub,存放庞大的镜像供用户下载。用户可以在本地网络内创建一个私有仓库,但用户创建了自己的镜像后可使用push
命令将他上传到公有或私有仓库。下载在另外一台机器上使用时只需要从仓库中pull
下来即可。Docker的仓库跟Git类似,注册服务器可理解为GitHub这样的托管服务器。实际上,仓库注册服务器(registry)上存放着多个仓库,每个仓库又包含多个镜像,每个镜像有着不同的标签(tag)。仓库
docker和github- 容器
container
Docker利用容器来运行应用,容器是从镜像中创建的运行实例。每个容器都是相互隔离的,以保证平台的安全。容器的定义和镜像的定义一样,也是一堆层的统一视角,唯一的区别在于容器的最上层是可读写的。
一个运行态的容器被定义为一个可读写的“统一文件系统+隔离的进程空间+包含其中的进程”。一个运行态容器
正是文件系统隔离技术使得Docker成为一个非常具有潜力的虚拟化技术,一个容器中的进程可能会对文件进行修改、删除、创建等操作,这些改变都将作用于可读写层。
-
-
DOCKER是什么
2017-04-10 12:30:09Docker其实类似于早期的LXC,是由namespace和CGroup两个技术叠加出来的,但又不完全是。Docker的最大价值其实是让DevOps开发和运维的一体化能够轻松落地。早前DevOps很难落地,因为去部署、发布、运维和管理那些应用...Docker其实类似于早期的LXC,是由namespace和CGroup两个技术叠加出来的,但又不完全是。Docker的最大价值其实是让DevOps开发和运维的一体化能够轻松落地。早前DevOps很难落地,因为去部署、发布、运维和管理那些应用的过程很麻烦,所以在云上面衍生了大量的编排类的服务出来。
Docker通过镜像分发,可以快速部署;这种把配置和环境解耦的方式,让快速部署变成可能。这就意味着Docker的弹性非常好,而且速度很快。他可以快速扩容部署一百台,然后再迅速缩容到一台,随后再快速部署一百台;这是Docker从诞生开始的优点,所以运维的人很喜欢他。
Docker的出现改变了很多过去的开发形态。Docker是一种非常轻量级的开发和部署环境的形态,它提高了开发效率。此外,因为Docker会适配很多东西,所以底层虚拟化变得更简单。我们认为Docker在未来3—5年里面,变成一个非常主流的开源技术和商业生态,这个时候很多开发者会在上面做牵引,搬到Docker上面去。这种模式会变成一种方向,而这个方向的代表就是Docker。
Docker 是一个工具,它致力于为任何应用程序创建分发版本而简化封装流程,将其部署到各种规模的环境中,并将敏捷软件组织的工作流程和响应流水化。
相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解。Docker是一个类似于虚拟机的容器,可以使开发者在同一服务器上独立地运行自己的程序,此外,不局限于某特定操作系统的特性,为开发者的部署带来了极大的便利。
Docker 最初的2小时(Docker从入门到入门) http://blog.csdn.net/21cnbao/article/details/56275456
最近Docker淫威太盛,看我怎么扁它!
https://mp.weixin.qq.com/s?src=3×tamp=1491798149&ver=1&signature=XiVTpaGjEY16tF*nP8ajyeir1TKSYVDcBEeBEj*7wC-OlkLEgxj049ljKrsgAMlBqnJkhKpyjMsvAMQPDWLB2HCYx7Ic8qXM4eOCF3FBAg*GVMkKU7mRdNanxxOk3hIXuGm1x8JCZjrQCQy*udvJEQ== -
Docker是什么?开发者可以使用Docker做什么?
2020-11-27 14:32:16什么是Docker,Docker是什么? 从Docker Logo可以这么看:鲨鱼/货轮是操作系统,集装箱就是那些需要一个个部署的应用。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的... -
Docker是什么?可以用Docker做什么?
2020-06-06 18:33:50Docker是什么? Docker的思想来自于集箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船... -
Docker是什么?
2019-05-19 22:08:32Docker是什么? Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。 容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖... -
Docker是什么?VM(虚拟机)和Docker有什么区别
2019-07-22 08:45:21Docker是什么 Docker是一个软件箱子,或者称之为一个容器,容器间相互隔离的一钟容器技术。系统级别的容器,比如说一个CentOS,或一个Ubuntu的容器,只要一次构建,你就可以发布到在任何地方(各种您熟悉的操作系统... -
Docker学习记录(一)-Docker是什么
2020-01-05 22:59:06Docker是什么? Docker镜像是什么? Docker容器是什么? Docker镜像和容器之间的关系 我们为什么要使用Docker? 使用Docker mac安装Docker Docker初体验 Docker常用命令 总结 参考资料 百度百科:... -
Docker 是什么,组成
2017-12-29 16:23:19Docker 是什么,组成 -
带你认识 Docker 是什么
2019-02-23 23:30:57比如近几年运维行业比较火热的 Docker 容器技术,如果你有想法,请关注本次 Chat,本次 Chat Docker 君将带你认识 Docker 是什么?以及通过学习 Docker 的基础知识来快速理解并且上手 Docker。还等什么?赶紧上车吧... -
[从零开始学Docker]1. Docker是什么?为什么要使用Docker?
2017-07-18 17:03:54Docker是什么?Docker的好处是什么?为什么我们要使用Docker? -
Docker是什么?Docker安装MySQL示例
2018-12-13 17:59:11一、Docker是什么? Docker在英文中的意思是“码头工人”的意思,大家可以想象,在码头上有很多工人,他们正在搬运货物。首先将货物放入集装箱中,然后将集装箱放入货船上,货船将这些集装箱以及其中的货物运送到... -
Docker系列:Docker是什么
2020-04-04 23:57:54一种容器技术, Docker是基于Go语言实现 目标:“Build,Ship and Run Any App,Anywhere”一次封装到处运行 为什么出现 开发与运维的鸿沟、减少运维的工作量 解决了什么问题 解决了运行环境和配置问题... -
一篇搞定Docker是什么
2020-01-10 17:23:59一、Docker是什么 1.1 什么是 Docker docker是一个开源的软件部署解决方案; docker也是轻量级的应用容器框架; docker可以打包、发布、运行任何的应用。 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在... -
【Docker基础】:Docker是什么?容器是什么?
2019-06-11 22:35:12Docker是什么?容器是什么?1.什么是容器?2.为什么需要它?3.举例说明4、容器是如何解决这个问题的呢?5、虚拟机和容器有些类似,那么二者之间有什么区别呢?6、容器有哪些优点呢? 1.什么是容器? 容器是完全使用... -
2.[Docker学习] Docker是什么,为了解决什么问题
2019-03-27 17:28:58文章目录Docker是什么解决了什么为题 Docker是什么 官网 https://www.docker.com/ 基于Go语言开发 是全球领先的软件容器平台 理念 Build,Ship and Run Any App,Anywhere 解决了什么为题 开发人员利用 Docker ... -
Docker是什么?Ubuntu怎样安装Docker(CE)?安装Docker常见问题?
2019-03-28 11:31:08Docker是什么?Ubuntu怎样安装Docker(CE)?安装Docker常见问题?Docker是什么?我自己对于Docker的理解集中箱化越来越受欢迎,因为集中箱化有以下优点:镜像和容器容器和虚拟机Ubuntu安装Docker(CE)操作系统需求... -
Docker简介(一)---Docker是什么
2019-05-20 15:08:53Docker是什么1.Docker为什么出现2.Docker理念3.总结 1.Docker为什么出现 一款产品从开发到上线, 从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得... -
Docker(一) Docker是什么、为什么用、如何用
2019-03-31 21:36:331、Docker是什么 Docker 是一个开源的应用容器引擎,只需一次创建,就可在不同类型的宿主机,比如物理服务器、虚拟机、公有云主机等,搭建出你需要的应用程序运行环境。 2、为什么要用Docker 轻量、隔离、可移植... -
docker是什么,docker是干什么的
2018-07-21 09:14:36Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学... -
docker基础——Docker是什么
2018-06-11 14:14:34Docker概念简介Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也... -
k8s中的Docker是什么
2020-06-12 11:10:56介绍docker的前世今生,了 解docker的实现原理,以Django项目为例,教大家如何编写最佳的Dockerfile实现构业务镜像的制作。通过本章的学习,大家会知道docker的概念及基本操作,并学会构建自己的业务镜像,并通过抓...
-
FirewallWin.zip
-
WGS坐标转国测GCJ奥维的VB源码
-
C Mandarin Orange(贪心+思维)
-
Selenium3分布式与虚拟化
-
正确小程序全开源独立版.zip
-
群晖 pip install psycopg2 安装失败,解决办法
-
Word VBA 选择要显示的样式
-
Swift遍历类属性改.zip
-
基于51的NRF24L01通信实验.zip
-
Sim_EKB_Install_2020_10_10.zip
-
Unity游戏开发之数字华容道
-
android笔试面试和实战课程
-
netcore启动流程源码分析
-
Toshiba BlueTooth.zip
-
小米平板3维修PCB位置图(PDF格式)
-
空中之夏学习记录--markdown语法入门
-
转行做IT-第7章 数组
-
BUUCTF 10
-
Xdebug helper.zip
-
source insight如何设置编码格式总是乱码