跳至主要內容

二、Docker 架构

安图新大约 5 分钟云原生Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源

Docker 可以让开发者打包它们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker 使用完全使用沙箱机制,两个容器之间不会有任何接口 (这个有点像 iPhone 的 app ) ,更重要的是容器性能开销极低

学习前提

在继续阅读之前,我们希望你对 Linux 有一些基本的了解,包括 1、 会使用Linux常用的命令;
2、 知道大部分的Linux常识,比如终端serviceip用户等;
3、 熟练使用Ubuntu或者Centos或者MacOS种的一种昂;

如果你对这些知识还是一知半解,可以访问我们的 Linux 基础教程 先进行一些简单的了解

Docker的应用场景

1、 Web应用的自动化打包和发布;
2、 自动化测试和持续集成、发布;
3、 在服务型环境中部署和调整数据库或其他的后台应用;
4、 从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境;

Docker 的优点

1、 简化程序;

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化
Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理
方便快捷已经是 Docker 的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成

2、 解决运维配置噩梦;

在没有 Docker 之前,每一台机器,每一个要用到的依赖,几乎都要重新配置一遍
比如新增一台 MySQL 数据库,就要从头开始配置所有环境
有了 Docker 之后,只需要从仓库里把之前的 MySQL 镜像拉出来,直接使用

3、 节省开支;

使用 Docker ,可以在一台电脑上部署多个服务,多个应用,从而充分榨干每一滴性能
同时,又不用担心多个应用之间出现相互访问的情况

相关链接

Docker 官网: http://www.docker.comopen in new window

Github Docker 源码: https://github.com/docker/dockeropen in new window

如果你对 Docker 有那么一点了解,就知道 Docker 是一个开源的应用容器引擎

那么它是一个什么的应用引擎,它之前,又是怎么做的呢?

虚拟化

在阿里云等还没横空出世前,我们用的最多的是什么? 虚拟主机

想必早期的站长都知道,那个时候买的虚拟主机,是大家的网站都放在一台电脑上,不同的目录下而已,说直白一点,买虚拟主机,其实就是买了一个固定大小的文件夹

因为一台比较好的服务器是很贵的,如果只运行一个网站,资源也太浪费了,如果是多个网站,那么多个网站之间就要相互隔离,不然就可以相互访问对方的数据了

相互隔离的方式有很多中,比如现在常见的

1、 vmware;
2、 virtualbox;
3、 kvm;
4、 xen;

这四种软件,又称之为虚拟化,说的直白一点,就是隔离操作系统各个应用程序,使得它们之间相互独立

这几种虚拟化技术是怎么做到的呢? 看一张图

 

每一个应用程序都自带一个小操作系统,和系统类库,这样就有点资源浪费了 ( 虽然硬盘不值几个钱 )

Docker 出现了之后,这种状况就改变了,因为它采用了下面这种方式

 

由Docker 来屏蔽各个应用程序

Docker 工作模式

Docker 使用客户端-服务器 ( C/S ) 架构模式,使用远程 API 来管理和创建 Docker 容器

Docker 容器通过 Docker 镜像来创建

容器与镜像的关系类似于面向对象编程中的对象与类

Docker面向对象
容器对象
镜像
 
名词解释
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板
Docker 容器(Container)容器是独立运行的一个或一组应用
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
Docker 仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库
Docker Hub 提供了庞大的镜像集合供使用
Docker MachineDocker Machine 是一个简化 Docker 安装的命令行工具
通过一个简单的命令行即可在相应的平台上安装 Docker
比如 VirtualBox、 Digital Ocean、Microsoft Azure
上次编辑于:
贡献者: Andy