Devops实践:Docker 概述及基本使用


文章目录



什么是Docker

如今的云计算就好比大货轮,docker就是集装箱,一个个封闭式的箱体可以堆放再货轮上,我们不关心箱体里装的是什么货物;

我们这实际开发中,不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,很麻烦,还会造成一些冲突.
比如IIS和Apache访问端口冲突,这个时候你就要隔离.net开发的网站和php开发的网站.
常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高.
docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小.
所以 docker 就是实现虚拟隔离应用环境的容器.


容器有哪些优势

容器技术对进程进行封装隔离,属于操作系统层面的虚拟化技术.
由于隔离的进程独立于宿主和其它的隔离的进程,因此称为容器.
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护.
使得 Docker 技术比虚拟机技术更为轻便、快捷.

主要目标:通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用级别的一次封装,到处运行.


docker的组成结构

Docker 包括三个基本概念:

  • 镜像 Image
  • 容器 Container
  • 仓库 Repository

镜像 image

Docker 镜像是 一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等).
镜像不包含任何动态数据,其内容在构建之后也不会被改变.
镜像构建时,会一层层构建,前一层是后一层的基础.
每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层.


容器 Container

镜像和容器的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体.
容器可以通过 Docker API 创建、启动、停止、删除、暂停等.
在默认情况下,容器与其它容器及其主机是隔离的,拥有自己的独立进程空间、网络配置.

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)映射到宿主目录、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高.

容器 = 镜像 + 读写层

镜像是一种规范 , 容器是一种执行状态 ,所以现在回头再来理解他们很像面向对象里的类和实例的关系.


仓库 Registry

仓库是集中存放镜像文件的场所.
实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签


作用

Docker 可以将应用以集装箱的方式进行打包,通过镜像的方式可以实现在不同的环境下进行快速部署,在团队中还可实现一次打包,多次共享,使用 Docker 可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器.


优点

  • 高效的利用系统资源(节约成本)
  • 持续交付与部署(敏捷)
  • 多平台的迁移更容易(可移植性)
  • 容易的沙箱机制(安全性)

出自:Devops实践:Docker 概述及基本使用

回到顶部