Docker学习(一)docker的相关概念
容器技术并不是什么新概念,只不过最近几年随着云计算的火热,变得被大家所熟知。最早于1979年诞生的chroot技术,容器技术又称为容器虚拟化。
虚拟化技术
虚拟化就是通过虚拟化技术将一台实体计算机虚拟为多台逻辑计算机,虚拟后的每一台逻辑计算机都可以运行不同的操作系统,每一个逻辑计算机都是一个虚拟的实体,相互独立,相互隔离。虽然通过虚拟技术可以运行虚拟计算机,但是他们并不是在真实的基础上运行的。
虚拟化就是表示计算机资源的一种抽象方式,它是一系列虚拟技术的集合,如:硬件虚拟化技术,处理器虚拟化技术,指令虚拟化技术,软件虚拟化技术等。
Docker
对于计算机领域,虚拟化技术主要分为两类,一类是硬件虚拟化,一类是软件虚拟化,容器技术属于软件虚拟化。
为什么使用容器?
与传统软件开发,运维相比,容器技术可以更高效的构建,维护管理应用。举个例子,传统软件开发,应用上线,中间需要好多麻烦的过程,需要安装各种相关依赖软件,然后测试,发布,本地测的好好,上线好发现运行不起来,定位环境问题相当麻烦,相信大家都深有体会。
使用容器技术后,我们可以把应用依赖的软件以及资源都放到一个集装箱里,docker的图标就是集装箱。运维只需要一个简单的命令就可一把它发布到各个服务器,而且不担心水土不服,这样会节省大量的时间。
Docker基础
docker其实非常简单,你用到的命令也不过十几条。
Docker是一个构建,发布,运行分布式应用的平台,Docker平台整体可以看成是由Docker引擎,Docker Registry两部分组成。Docker引擎的底层是各种操作系统以及云计算基础设施,而上层则是各种应用程序和管理工具,每层之间都通过API来通信的。
- Docker Client
Docker引擎可以简单的理为Docker服务端程序,他让你可以运行基于docker构建的应用,它是一个cs架构的软件。当你运行docker version时,就会看到两大部分,client和server。通过client的指令通过API,我们可以直接和后台守护进程的server通信交互。
- Docker Daemon
daemon就是一个守护进程,它是整个docker的核心引擎,在0.9版本之前,客户端和服务端是同意在一个二进制文件中,后来为了根号的管理,划分为4个二进制文件:docker,containerd,docker-containerd-shim和docker-runc。
分开之后,守护进程与容器管理不再相互牵制,使得docker技术变得更人性化。
- Docker镜像
docker镜像是Docker系统中的构建模块,是启动一个Docker容器的基础。
Docker镜像分层构建,从底层到上层,我们写的Dockerfile,就是镜像构建步骤。 - Docker容器
容器是docker的核心,根据镜像文件描述,docker会创建一个容器,你不用关心它内部有些什么,你只要知道它提供了你的应用程序所需的所有资源,你可以很方便的管理它。从宿主机来看,它只是一个简单的用户进程而已。
- Docker仓库
相信大家对github都陌生,它是一个开源代码托管仓库,docker仓库和它的作用一样,不管他存放的是镜像。这样你就可以很方便的把你的镜像分享给其他人,不过你需要把你的镜像上传到docker的公开仓库去。在你本地也可创建私有仓库,方便不同服务器的应用发布。
总结
学习使用docker成本并不高,基本看看操作指令,了解下docker是干嘛的就能上手了,如果你想要了解核心原理,那需要花很多时间。
你的应用程序以前是怎么写的现在依然怎么写,只是最后为它写一个Dockerfile,告诉docker该怎么启动这个应用,这个应用需要哪些软件,比如mysql,jdk,tomact,redis,mongodb等,docker会自动帮你安装这些,并在容器中帮你启动,这样你的应用就可以不运行环境为头疼了。
在其他服务起安装,也不需要从前一样先去手动安装一些软件,配置好环境。直接运行镜像就好了,所有东西都已经放到集装箱里了,你所要做的只是把它搬运过去就好了。
今天只是个简单的介绍,下节课就来安装使用它。欢迎关注我的公中号:mike啥都想搞
,一起交流学习