Docker:(一)简介与安装

    一、基础概念

    Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,是一个新兴的轻量级虚拟化技术,其主要动力是在不同的机器上创造无差别的应用运行环境。

    Docker是以docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。是一个跨平台、可移植且简单易用的容器解决方案,其源代码托管在 Github 上,基于go语言并遵从Apache2.0协议开源。

    Docker 使用客户端-服务器 (C/S) 架构模式,Docker容器本质上是宿主机上的进程,可在容器内快速自动化地部署应用,并通过操作系统内核技术(namespace、cgroups)为容器提供资源隔离和与安全保障(通过namespace实现资源隔离,通过cgroups 实现资源限制,通过写时复值机制(copy-on-write)实现了高效的文件操作)。其中,有六个namespace:Mount文件系统隔离、网络隔离network、主机名隔离UTS、进程间通信隔离IPC、用户和用户组隔离User、进行ID隔离PID。Cgroups可以限制、记录任务组所使用的物理资源(包括CPU/memory/IO等),为容器实现虚拟化提供基本保证。

      二、基本组件

    实际应用过程中,Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。

    包含三部分:客户端、服务器和镜像仓库,如下图所示:

Docker:(一)简介与安装

    最核心的是 Docker Daemon我们称之为Docker守护进程,也就是Server端,Server端可以部署在远程,也可以部署在本地,因为Server端与客户端(Docker Client)是通过Rest API进行通信。图中各组件作用如下:

    Docker Engine: 指的是通常意义上的docker容器,主要用来接收和处理docker命令请求。其架构为:

Docker:(一)简介与安装

    Docker Machine则主要用来管理 docker化的host (安装了Docker Engine的主机);

    docker Client客户端->向docker服务器进程发起请求,如:创建、停止、销毁容器等操作;

    docker Server服务器进程->处理所有docker的请求,管理所有容器;

    docker Registry镜像仓库->镜像存放的*仓库,可看作是存放二进制的scm;

    三、虚拟机与Docker的区别

      1. 底层架构

       Docker:(一)简介与安装

      2.基本属性

       Docker:(一)简介与安装

 四、Docker安装

    Docker分为社区版和企业版,且支持不同的操作系统平台,不同系统的软件依赖不一样,用户安装时需选择符合当前操作系统的版本。

   安装docker具有三种方式,(1)设置docker镜像源(2)手动rpm(3)编写运行脚本;一般选择设置第一种方式,但是若所在范围不能联网,则建议手动rmp包安装。

  方一:使用yum在centos上安装

     1. 验证当前centos系统是否为64位,内核版本是否高于3.10;  

   命令:uname -r

     2. 移除旧版本

yum remove docker docker-client docker-common \       
          docker-client-latest  docker-latest docker-logrotate docker-engine \ 
               docker-latest-logrotate  docker-selinux docker-engine-selinux

 换行需在每行末尾加斜杠\。

     3. 安装一些必要的系统工具:

yum install -y yum-utils device-mapper-persistent-data lvm2

     4. 添加软件源信息(即yum获取源路径)

yum-config-manager --add-repo http://mirrors.aliyun.com / docker-ce/linux/centos/docker-ce.repo

    5. 更新缓存:sudo yum makecache fast

    6.安装docker-ce:sudo yum -y install docker-ce

    7.启动docker后台服务:sudo systemctl start docker

    8.测试运行hello-world:docker run hello-world

   五、Docker安装目录

 

  1. 安装目录,安装完之后,会生成几个文件夹?

     Pull镜像存放在哪?docker/container/xxx下,xxx的具体信息在docker/image/overlay/ repositories.json里。

    docker 的镜像与容器都存储在 /var/lib/docker 下面。

     不同操作系统具有不同存储方式,其中,Redhat版本,在该路径下,文件目录如下:

    

├── containers
├── devicemapper
│   ├── devicemapper
│   │   ├── data
│   │   └── metadata
│   └── metadata
│       ├── base
│       ├── deviceset-metadata
│       └── transaction-metadata
├── graph
├── linkgraph.db
├── repositories-devicemapper
├── tmp
├── trust
└── volumes

    其中,devicemapper/devicemapper/data(metadata)下的data和metadata是用来存储对应的存储池和相关的元数据。devicemapper /metadata下的metadata用来存放前面元数据的id、大小、以及UUID等信息。