Docker容器技术介绍

Docker是指容器化技术,用于支持创建和实验Linux Container。借助Docker,你可以将容器当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的高效创建、部署和复制,并能将其从一个环境顺利迁移至另外一个环境。

本节索引:

一、容器的概念

二、LXC技术介绍

三、Docker技术介绍

四、Docker基本配置与安装

 

 

一、容器的概念

什么是容器?

google在它的词条中这样定义:

容器是一种基础工具;泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于

容纳、储存、运输物品;物体可以被放置在容器中,而容器则可以保护内容物;

人类使用容器的历史至少有十万年,甚至可能有数百万年的历史;

 

而在计算机领域:

容器(container)是指是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提

供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试

再到生产的整个过程中,它都具有可移植性和一致性。

 

容器与虚拟化的区别?

很多人分不清容器与虚拟化的区别。容器是虚拟化吗?是,但也不竟然,简单来说:

虚拟化使得多个操作系统可同时运行在单个系统上

容器则可共享同一个操作系统的内核,将应用程序与系统其它部分隔离开

1

这意味着什么?首先,让多个操作系统在单个虚拟机监控程序上运行以实现虚拟化,并不

能达成和使用容器同等的轻量级效果。事实上,在仅拥有容量有限的有限资源时,您需要能

够可以进行密集部署的轻量级应用。Linux 容器可从单个操作系统运行,在所有容器中共享该

操作系统,因此应用和服务能够保持轻量级,并行快速运行。

 

 

容器技术发展历史:

2000年,计算机中的容器概念出现,当时称为FreeBSD jail

2001年,LXC(Linux Container)诞生,容器技术通过VServer项目,进入到了Linux领域,

这项工作的目的是“在高度独立且安全的单一环境中运行多个通用 Linux 服务器”。

2008年,Docker容器技术通过 dotCloud 登上了舞台。Docker 技术将 LXC 工作与经过改进的

开发工具结合在一起,从而提高了容器的用户友好度。Docker 是一种开源技术,也是当前最广

为人知的、用于部署和管理 Linux 容器的项目和方法。

 

 

二、LXC技术介绍

在上文中,我们了解到docker其实就是对LXC进行二次封装,具备多个强大功能的工具集,它有

着更好、更简易的操作

所以要想学习docker,就必须先了解Linux Container的工作原理

LXCLinux Container,最早一批真正把容器技术用一组简易模板实现的解决方案

LXC主要用到名称空间(name space)与控制组(cgroups)的技术,其中

namespace:负责隔离一个独立的容器所必须具备的资源

cgroups(Control Groups):实现对系统资源的分配与度量

 

Linux Container基本架构:

2

 

namespace

3

一个隔离的Linux Container必须具有以下资源:

UTS:独立的主机名,域名

IPC:进程间通信和共享内存

PID:独立的init

Network:独立的网卡,TCP/IP协议栈

Mount:独立的根,文件系统

User:独立的root

 

cgroups(Control Groups)

功能:实现资源的分配和度量

blkio:块设备IO

cpu:CPU

cpuact:CPU资源使用报告

cpuset:多处理器平台上的CPU集合

devices:设备访问

frezr:挂起或恢复任务

meory:内存用量及报告

perf_evnt:对cgroup中的任务进行统一性能测试

net_cls:cgroup中的任务创建的数据报文的类别标识符

 

 

三、Docker技术介绍

Docker是指容器化技术,用于支持创建和实验Linux Container。借助Docker,你可以将容器

当做重量轻、模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对容器的

高效创建、部署和复制,并能将其从一个环境顺利迁移至另外一个环境。

 

Docker官方网站:http://www.docker.com

Github Docker 源码:https://github.com/docker/docker

 

基础特性:

基于C/S架构应用程序

模块化

层与镜像版本控制

支持回滚

快速部署

 

Docker的应用场景

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

 

Docker基础架构图:

4

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

Docker 容器通过 Docker 镜像来创建

DOCKER_HOST:真正运行容器的主机

Containers:容器,独立运行的一个或一组应用

Images:镜像,用于创建 Docker 容器的模板

Registry:镜像仓库

 

镜像image与容器Container区别:

镜像是静态的,不会运行

容器则是动态的,有生命周期

 

doctor容器镜像站:https://hub.docker.com

 

Docker object:

         image

         containers

         networks

         volumes

         plugins

 

 

四、Docker基本配置与安装

目前docker版本分为docker ce(社区版)docker ee(企业版)

Docker EE相对于Docker CE增加了额外的支付产品和支持,安全性更好

以下安装实验我们基础环境均为:

操作系统:CentOS 7.4

Docker版本:docker ce

 

安装docker基础条件:

64 bits CPU

Linux Kernl 3.10+

Linux Kernl cgroups and amespaces

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版

本为 2.6.32-431 或者更高版本。

 

 

示例:yum安装docker ce

注意:系统安装库中必须包含base源、extras源及updates源安装包

由于官网速度较慢,我们以aliyun镜像库中的docker ce安装为例:

下载docker ce库

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum repolist

1

直接yum安装docker ce

yum install docker ce -y

启动docker

systemctl start docker

启动docker后,网卡中将出现一块名称为docker0的虚拟桥接网卡,用于连接宿主机与

docker容器间的通讯

2

查看docker版本

docker version

docker info                       #查看详细信息

2-2

测试运行 hello-world

docker search 可以搜索包含搜索词的docker image

3

docker run hello-world

4

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

 

显示本地已有镜像

docker image ls

5

 

 

示例:镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以使用加速器来提升获取Docker

镜像的速度,以阿里云加速器为例:

加速器地址:https://e3m7by4j.mirror.aliyuncs.com

针对Docker客户端版本大于 1.10.0 的用户

 

配置加速器:

vim /etc/docker/daemon.json

{

  “registry-mirrors”: [“https://e3m7by4j.mirror.aliyuncs.com”]

}

6

重启docker服务

systemctl restart docker.service

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104355

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code