走近Docker---(1)docker的概念

前言

虽然关于docker的概念,网上有很多详细的介绍,但是,感觉有点杂乱。下面我自己总结一下,让自己了解的更加深入点。
(会及时更新)



docker概念


  • Docker 是一个开源的应用容器引擎。

  • 基于 Go 语言 并遵从Apache2.0协议开源。

  • 本身并不是容器,而是一个管理容器的管理器。

  • Docker以进程为单位,把CPU的时间、用量、内存空间、IO用量以指定比例或指定数量的方式分派给多个进程。

  • Docker进程可以直接与主操作系统进行通信,并为每个Docker容器分配资源;还可以将容器与主操作系统隔离,并将各个容器互相隔离。其原理就如同其logo一样,仿佛一条蓝鲸上的很多集装箱一样。

  • Docker可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。

  • 开发者可以打包应用以及依赖包到一个可移植的容器,通过Docker将自己的服务变成一种标准化的、可移植的组件,在任何主流的系统中开发、调试和运行。不需要依赖于任何语言、框架或系统。

  • 2018年,随着docker技术的成熟与发展,docker被更广泛的应用到了生产环境中。



docker如何理解?

我们一般都是用集装箱来代表docker的。意思就是把系统比作货轮,docker比作集装箱,做好的各种服务及应用比作货物装入集装箱中,我们可以通过把货物装入集装箱,简洁的对服务进行调用,并且可以转移到其他的货轮中去,再次调用。再简单的说,就是如果你启用了一个容器,在里面配置好环境及服务后,做成docker镜像,从此你要是想用这个配好的环境就直接用docker镜像生成容器即可;如果容器中的应用出现了错误或者要升级,可以直接用另一个容器替换即可;docker容器间是隔离的,就像是集装箱的分类,有的放食物,有的放导弹,不同的容器可以运行不同的应用,且docker镜像可在任何主流的系统中使用。当然它更多的优点和它与虚拟机的区别下面再说,这里只是简单的说一下,便于理解。



docker的发展历史


1.1979 年提出的 UNIX chroot


2.2000 年, FreeBSD 开发了类似于 chroot 的容器技术 Jails(沙盒)


3.2001年,Linux 发布VServer


4.2004年,Solaris 发布Solaris Containers


5.2005年推出 OpenVZ


6.2006年,Google推出Process Containers


7.2007年,Google 将Process Containers更名Control Groups( cgroups ),并加入到 Linux 内核中


8.2008 年,基于cgroups和namespace 推出了(第一个最为完善的) Linux 容器 LXC


9.2013年推出Docker


10.2014年,CoreOS推出类似于 Docker 的容器 Rocket


11.2016年微软在 Windows上提供了对docker容器的支持


12.至今,docker相关的技术容器云,微架构仍在持续增长中。



docker的优点


1、快速部署
Docker可以使开发者可以直接将自己的成果放入Docker中进行管理。使过去需要用大量时间部署的任务,在Docker容器的处理下,数秒就可完成,方便而又迅捷。

2、多环境使用
Docker 可以将应用的实例Docker 打包为Docker镜像(Docker 镜像中包含运行环境和配置)。 因此Docker可以简化部署多种应用实例,将其打包为镜像部署,并可在不同的环境中直接生成容器使用。

3、节省开销
Docker 的虚拟化技术与虚拟机不同点在于:
虚拟机能在硬件设施上运行各种配置不一样的平台(软件、系统),但是对硬件的依赖高,开销大;Docker可以让开发者将运行环境与配置全放在代码中然后部署docker,并且使用docker镜像令同一个Docker的配置的成果在不同的环境中使用,降低了对硬件和应用环境的要求,大幅降低额外的开销。

4、提高开发效率
Docker能提升开发者的开发效率,可以快速部署不同的测试环境及开发环境,测试不同的开发环境中服务的运行状态,并且其可以支持几十个服务在Docker中跑起来。Docker提供了很多的功能,其中包括为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助开发者调试Bug。



docker的架构


Docker主要有以下几部分组成:

Docker Client 客户端
Docker daemon 守护进程
Docker Image 镜像
Docker Container 容器
Docker Registry 仓库


【1】客户端和守护进程

Docker使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker客户端可以连接本地或者远程的守护进程。
Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。


【2】docker image 镜像

镜像是容器的基石,容器基于镜像启动和运行。
镜像是一个层叠的只读文件系统。
镜像保存了容器的启动条件。


【3】docker container 容器

容器是独立运行的一个或一组应用,通过镜像来启动。
每一个Docker容器都是独立和安全的应用平台。


【4】docker registry 仓库

docker仓库用来保存docker镜像,l类似于代码控制中的代码仓库(git)。
docker仓库分为公有和私有。docker公司为用户提供了公有仓库 https://hub.docker.com/
我们可以创建自己私有的仓库。



与虚拟机的区别

Docker类似于集装箱,虚拟机类似于码头。


【1】隔离

虚拟机对操作系统进行了虚拟化,隔离的更加彻底。常用来隔离不同的系统的服务。
Docker之间共享宿主机的操作系统,隔离性低于虚拟机。通常用于隔离不同的应用。


【2】运行效率

Docker直接利用宿主机的系统内核,生成虚拟机的速率大大低于容器Docker生成的速度。


【3】开销

虚拟机能在硬件设施上运行各种配置不一样的平台(软件、系统),但是对硬件的依赖高,开销大。
Docker可以在不同的环境中使用,降低了对硬件和应用环境的要求,大幅降低额外的开销。

猜你喜欢

转载自blog.csdn.net/gx_1_11_real/article/details/80540465