运维go系列开发辅助技术

初识Docker

2019-02-18  本文已影响1人  NealLemon

What is Docker?

Docker 是世界领先的软件容器平台。Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。 -以上内容均来自官方文档摘录。

What is Container?

容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。 -以上内容均来自官方文档摘录。

目前的虚拟化技术

虚拟机 (VM) 是一个物理硬件层抽象,用于将一台服务器变成多台服务器。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源。

虚拟化技术.png

之后的容器技术

容器是一个应用层抽象,用于将代码和依赖资源打包在一起。多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动。

容器技术.png

由于容器技术将代码和依赖资源打包在一起,因此解决了运维和开发之间的矛盾。

虚拟化技术 VS 容器技术

特性 虚拟化 容器
隔离 物理层 应用层
启动 分钟级 秒级
性能 弱于原生 接近于原生
系统支持量(相同硬件环境) 10倍级 百倍级

Docker的架构以及底层技术

大体描述

首先Docker是一个Platform,提供了开发,打包,运行app的平台。

dockerengine.png

由上图可以看出,docker把底层基础架构和上层的应用隔离开来。

Docker Engine

dockerE.png

我们通过图中可以看到 Dokcer Engine 大体分三个部分

在稍后我们介绍如何在centos上安装docker后,可以使用命令去查看这三个部分的进程。

Docker架构

architecture.jpg

我们可以看到在这个详细的架构图中我们看出架构组成

镜像(Image) ----一个特殊的文件系统

image.png

Docker镜像是一个特殊的文件系统如图中的 Base Image,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。

我们可以Base Image基础之上,创建新的image,如图在centos的Base Image 之上可以创建一个mysql (image#2),然后可以在image#2上再继续创建image。镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。不同的image可以共享base image的资源。

image只是可读的。

容器(Container)——镜像运行时的实体

container.png

首先container是基于image创建的,并且是可以读写的一层(image只能读),也就是说先有image才可以有container。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。

仓库(Repository)——集中存放镜像文件的地方

镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

Docker底层技术

由于都是linux相关的技术,我也是百度个大概知道大体每个技术是干什么的。如果想深入了解docker底层,还是要钻研一下linux。

总结

本文主要是把docker的基本概念介绍了一下,方便之后的安装,创建镜像,运行容器等操作。详细的内容还是建议阅读官方文档。

上一篇 下一篇

猜你喜欢

热点阅读