Docker操做实践(2):Docker的安装及架构介绍

上篇咱们分享了一下容器的演进,而后用进程隔离、文件隔离、namespace、cgroups、libcontainer的几个角度展开容器的本质,本篇文章会对Docker的版本安装进行讲解并简介Docker的技术架构。linux


若是你还没看过前面的内容:能够点击《容器的本质是什么?容器从何而来?》sql


Docker版本

Docker在1.13以后,采用时间线做为版本号标识。Docker的版本分为社区版(CE)和企业版(EE)。企业版会提供额外的收费服务,好比包括一些通过官方认证的插件、容器等。docker


社区版又分为三种版本:数据库

稳定版本:stable。通常咱们使用此版本。json

预发布版:testapi

待发布版:nightly安全



Docker安装


1.卸载docker

卸载主机上已有的docker版本网络


image055.png

2. 安装前准备

配置yum架构

1. 安装yum工具及devicemapper存储驱动app


image057.png


2. 配置yum


image059.png


yum makecache的过程当中,能够看到能够安装使用的包是dockerr-ce-stable版本,也就是repo中默认只开启stable仓库。


此时若是咱们须要安装test或nightly版本,可使用yum-config-manger –enable docker-ce-test开启此仓库。


安装docker

可使用yum list查看仓库中docker的版本:


image061.png


1. 安装docker


image063.png


2. 启动docker

systemctl start docker

systemctl enable docker


3. 查看docker版本


image065.png



Docker镜像下载加速器的配置

可配置阿里镜像加速器,配置方法参考连接:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors


针对docker客户端版本大于1.10.0的,可经过修改/etc/docker/daemon.json文件来使用加速器。


若是该文件不存在,则直接建立。


操做命令:

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["镜像加速器地址(可从上面阿里云连接地址中获取)"]

}


EOF

sudo systemctl daemon-reload

sudo systemctl restart docker



Docker架构

Docker采用了传统的client-server架构模式,总架构图以下:


0079nlvZly4g7ajvhscrej30u00nj40n.jpg


用户经过docker client与docker daemon创建通讯,并将请求发送给后者。Docker daemon中的模块是松耦合结构,各模块各司其职并有机组合,完成用户的请求。


API:用于接收docker client的请求,而后根据不一样的请求分发给daemon的不一样模块执行相关的工做。


Docker client:是一个泛称,用来向指定的docker daemon发起请求。能够是docker命令行工具,也能够是任何遵循了docker api的客户端。


Graph:做为容器镜像的保管者。不管是docker下载的镜像,仍是docker构建的镜像,都由graph统一管理。


Execdriver:是对linux操做系统的namespace、cgroups、apparmor、SELinux等容器运行所需的系统操做进行的一层二次封装,其本质做用相似于LXC,可是功能要更全面。这也就是为何LXC会做为execdriver的一种实现而存在。不过目前,execdriver最主要的实现也是默认的实现是libcontainer库


Networkdriver:对容器网络环境操做所进行的封装。对于容器来讲,网络设备的配置相对比较独立,而且应该容许用户进行更多的配置,因此在docker中,这一部分是单独做为一个driverr来设计和实现的。这些操做具体包括建立容器通讯所需的网络,这个网络所需的虚拟网上,分配通讯所需的IP,服务访问的端口和容器与宿该机之间的端口映射,设置hosts、resolv.conf、iptables等。


Graphdriver:是全部与容器镜像相关操做的最终执行者。包括从远程docker registry上下载镜像并进行存储,也包括本地构建完镜像后的存储。当用户下载指定的容器镜像时,graphdriver将容器镜像分层存储在本地的指定目录下;同时当用户须要使用指定的容器镜像来建立容器时,graphdriver从本地镜像存储目录中获取指定的容器铝合金,并按特定规则为容器准备rootfs;另外,当用户须要经过指定dockerfile构建全新镜像时,graphdriver会负责新镜像的存储管理。目前graphdriver支持对接四种不一样的文件存储:aufs、btrfs、vfs、devmapper。



Docker VS 虚拟机


1. Docker与虚拟机的架构对比

Docker架构与虚拟机架构对比状况以下图。最直观的差异在于docker容器中是没有独立的os,而是与宿主机共用同一个内核。而后经过隔离技术,让咱们在进入每个容器时,所看到的内容和操做的环境就像是在一个虚拟机中同样。


image068.png

2. 容器与虚拟机的优劣对比

容器与虚拟机的对比状况以下:


image053.png


在安全性上,虚拟机确定是比容器要好的,显而易见,虚拟机毕竟拥有着独立的操做系统。


在计算资源开销和镜像大小对比上,容器优点更大,从而实现了硬件资源的节约。


在启动速度、快速扩展能力上,容器优点更大,从而实现了容器化应用的快速部署/扩容,从而提升业务的敏捷性


在跨平台迁移能力上,容器优点更大,这对于容器化应用在企业的不一样云环境之间的迁移提供了很是大的便利性。


基于以上的种种优点,容器实现了对微服务架构和devops的更好的支持。


做者:沈晓龙


4855da8207d572e814763b40567393f6


好文推荐

容器的本质是什么?容器从何而来?

使用sqlplus进行Oracle数据库批量自动发布

业务复杂、数据庞大、应用广怎办?了解下分布式事务的解决思路!

这里有份选择云服务商的攻略,请查收…

SaaS设计:自动化服务启停设计示例 

相关文章
相关标签/搜索