一、简介

以下部分内容摘自《容器云运维实战》 中国工信出版集团、电子工业出版社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 updatesudo apt-get install wget进行安装

获取包

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

提示成功后,运行:

sudo docker输出:

重启系统,运行:

sudo docker run hello-world

它会下载一个测试image并运行。我操作若干次,终于下载下来了:提示有点问题:

我在休息时间处理,时间比较紧张,以后再来分析这里原因。直接测试使用官方的ubuntu镜像

sudo docker pull ubuntu运行hello worldsudo 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:列出正在运行的(容器)containersdocker pull ubuntu:下载镜像docker run -i -t ubuntu /bin/bash:运行ubuntu镜像docker commit 3a09b2588478 ubuntu:mynewimage:提交你的变更,并且把容器保存成Tag为mynewimage的新的ubuntu镜像.(注意,这里提交只是提交到本地仓库,类似git)

ubuntu 安装docker_Docker学习笔记1 虚拟化历史及 Ubuntu环境下体验安装相关推荐

  1. 【Rhapsody学习笔记(二)】Linux环境下的Rhapsody集成引擎安装部署

    Rhapsody的安装部署包括Rhapsody引擎的部署(服务端),以及Rhapsody IDE(客户端)的安装部署,其中,IDE可以安装在多台不同的windows客户机上,本文仅介绍CentOS7环 ...

  2. mysql5.715 安装在d盘_mysql5.7.15在windows环境下的安装设置图文详细教程

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  3. Redis学习笔记~Redis在windows环境下的安装

    Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...

  4. PyTorch学习笔记(一):PyTorch环境安装

    往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: PyTorch学习笔记(一):PyTorch环境安 ...

  5. linux最小系统 安装教程,Linux 学习笔记 1 使用最小的系统,从分区安装系统开始,...

    Linux 学习笔记 1 使用最小的系统,从分区安装系统开始, 我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不 ...

  6. Spark下载和安装(学习笔记)

    夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远. 夫学须静也,才须学也,非学无以广才,非志无以成学.淫慢则不能励精,险躁则不能冶性. 年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐, ...

  7. Android学习笔记之(一)开发环境搭建

    Android学习笔记之(一)开发环境搭建 zouxy09@qq.com http://blog.csdn.net/zouxy09 至于说Android是什么之类的俺就不啰嗦了,因为它离我们太近了.直 ...

  8. ubuntu安装python环境_AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装

    AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装 说实话我自己内心是不看好无人驾驶的短期普及的,但是通过对无人驾驶的研究可以实现对一些科学知识的掌握和探索.通过无人驾驶的仿真环 ...

  9. 《游戏设计艺术(第2版)》——学习笔记(17)第17章 有种体验叫作故事

    <游戏设计艺术(第2版)>学习笔记(17) 第17章 有种体验叫作故事 故事/游戏的二象性 被动娱乐的迷思 梦想 事实 真实世界方法1:珍珠串 真实世界方法2:故事机 问题 问题1:好的故 ...

  10. C# 学习笔记(19)操作SQL Server下

    C# 学习笔记(19)操作SQL Server下 ADO.net操作数据库 这应该是比较老的技术了,以后有空的话学学 Linq /// <summary> /// 数据库使用类 /// & ...

最新文章

  1. CSS常见布局解决方案
  2. 尹伊:用敏捷开发思维来成长!
  3. [C++再学习系列] 引用和指针
  4. 每日一皮:天气转凉了,你的长袖穿起来了吗?
  5. python自学流程-Python系统学习流程图,教你一步步学习python
  6. thinkjs——空对象判断
  7. 微课|中学生可以这样学Python(5.6.1节):列表推导式3
  8. python机械臂怎么控制_Python编程语言趣味学,EV3工业机械臂上线
  9. 专家称秦始皇遗体可能保存完好(图)
  10. nodejs安装不好_nodejs安装过程中环境变量配置的问题
  11. 微软向开源社区开绿灯 开放Web服务规范专利[转载]
  12. BZOJ 1001 平面图转对偶图
  13. debian 系统配置网易镜像源
  14. 从零开始学Android自定义View之动画系列——属性动画(2)
  15. 材料成型与控制专业和计算机专业,材料成型及控制工程专业
  16. SQL基础系列(八)——排序、分组排序(RANK)
  17. Learning Community Embedding with Community Detection and Node Embedding on Graphs
  18. Jenkins自动集成
  19. 1991年首批全国500位名老中医
  20. amcharts示例

热门文章

  1. windows server 2008 远程桌面(授权、普通用户登录)
  2. 实施ERP过程中必须注意的“后天条件”
  3. Linux命令学习手册-mount命令
  4. android各版本对应的SDK level(包括android 10)
  5. [Java][Android][Process] ProcessBuilder与Runtime区别
  6. Luogu1005 矩阵取数游戏
  7. uni.request在接口状态码403等还是走success
  8. element中的table相关
  9. linux dhcp服务器设置,Linux DHCP服务设置浅述
  10. threejs 热力图做成材质_脉冲滤筒除尘器滤芯的材质