一、简介

以下内容摘自《容器云运维实战》 中国工信出版集团、电子工业出版社
Docker是一个类似于虚拟机的轻量级容器。Docker在2015、2016年迅速普及应用。

1. 容器技术分类

容器技术又称为容器虚拟化,是虚拟化技术中的一种。 目前虚拟化方案主要有:

  • 硬件虚拟化
  • 半虚拟化
  • 操作系统虚拟化 等

硬件虚拟化是所有虚拟化分类中,最为复杂的技术之一,在宿主物理真机上创建一个模拟硬件的程序,来仿真模拟所有操作系统运行环境中所有的硬件,在这个基础上运行我们的操作系统。但硬件虚拟化的运行效率很低。

容器技术在虚拟化技术中的位置:
相比之下,应用较为广泛的则是基于软件的虚拟化技术。而软件虚拟化又可以分为应用虚拟化(如Wine)和平台虚拟化(如虚拟机)。Docker属于操作系统虚拟化,相较于其它主流虚拟化技术更为轻量。操作系统虚拟化又属于平台虚拟化的一种。

2. 容器技术发展历史

容器技术最早可以追溯到chroot(1979),它最初是UNIX操作系统上的一个系统调用,用于将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问该目录 。

2000年 FreeBSD Jails

在这里插入图片描述
由R&D Associates公司的Derrick T. Woolworth为FreeBSD引入的FressBSD Jails成为最早的容器技术之一,与chroot不同的是,它可以为文件系统、用户、网络等的隔离增加了进程沙盒功能。因此,它可以为每个jail指定IP地址、可以对软件的安装和配置进行定制,等等。

Linux VServer

在这里插入图片描述
这是另一种Jail机制 , 用于对计算机系统上的资源进行安全地划分,每个所划分的分区叫作一个安全上下文(security context),在其中的虚拟系统叫作虚拟私有服务器(virtual private server,VPS)

2004 2005 Solaris Containers / OpenVZ

在可控性和便捷性上更胜一筹。
在这里插入图片描述

2006 Process Containers

Google 公开了Process Containers技术,用于对一组进程进行限制、记账、隔离资源的使用。2007年 Control Groups合并到了Linux 2.6.24内核中。

2008 LXL(Linux Containers)

在这里插入图片描述
是第一个最完善的Linux容器管理器的实现方案,是通过CGroups和Linux名字空间namespace实现的。LXC存在于liblxc库中,提供了各种编程语言的API实现。与其它容器技术不同的是,LXC可以工作在普通的Linux内核上,而不需要增加补丁。

2011年 Cloud Foundry发布了Warden

在这里插入图片描述
不像LXC,Wardon并不紧密耦合到Linux上,而是可以工作在任何可以提供隔离环境的操作系统上。它以后台守护进程的方式运行,为容器管理提供了API。

2013 Google发布了Lmctfy

在这里插入图片描述
这是一个Google容器技术的开源版本,提供Linux应用容器。

2015年 Libcontainer

Google决定贡献Lmctfy概念,并抽象成Libcontainer,现在为Kubernetes所用的cAdvisor工具就是在Lmctfy项目的成果开始发展的。

LibContainer项目最初由Docker发起,现在移交给了开放容器基金会(Open Container Foundation)

同年,dotCloud发布了Docker。 Docker提供了从构建、运行到管理、监控等一系列工具,引入了整个管理容器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的rest api、命令行、等等。

2015年6月 OCP成立

Linux基金会于2015年6月成立了开放容器技术项目(open container project,OCP),并让各路角色都加入OCP项目。
在这里插入图片描述
2015年微软也在Windows Server上为基于Windows的应用添加了容器支持,称之为Windows Containers,与Windows Server2016一起发布。

  • 官方网址: https://www.docker.com
  • 官方有一个在线模拟环境: https://www.docker.com/tryit/

二、安装

从官网介绍来看,它支持的操作系统非常多,基本许多我没见过的。
我的测试环境是Ubuntu Kylin 14.04

1. 需求

推荐使用64-bit,kernel 最低3.10,可以使用 uname-r查看
这里写图片描述
我用的Ubuntu版本比较高,官方介绍可以跳过一些操作。

2. 安装过程(使用wget)

安装需要sudo权限

确定安装了wget

which wget
如果没有安装,使用
sudo apt-get update
sudo apt-get install wget
进行安装

获取包

wget -qO- https://get.docker.com/ | sh
q后面是大写字母O

提示成功后,运行:

sudo docker
输出:
这里写图片描述

重启系统,运行:

sudo docker run hello-world

它会下载一个测试image并运行。我操作若干次,终于下载下来了:
提示有点问题:
这里写图片描述
我在休息时间处理,时间比较紧张,以后再来分析这里原因。
直接测试使用官方的ubuntu镜像

sudo docker pull ubuntu
运行hello world
sudo docker run ubuntu /bin/echo hello world

这里写图片描述

3. 安装过程(使用apt-get)

$ sudo apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker

4. Docker 常用命令

docker images:列出所有镜像(images)
docker ps:列出正在运行的(容器)containers
docker pull ubuntu:下载镜像
docker run -i -t ubuntu /bin/bash:运行ubuntu镜像
docker commit 3a09b2588478 ubuntu:mynewimage:提交你的变更,并且把容器保存成Tag为mynewimage的新的ubuntu镜像.(注意,这里提交只是提交到本地仓库,类似git)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐