Docker
学习目标:
掌握Docker基础知识,能够理解Docker镜像与容器的概念
完成Docker安装与启动
掌握Docker镜像与容器相关命令
掌握Tomcat Nginx 等软件的常用应用的安装
掌握docker迁移与备份相关命令
能够运用Dockerfile编写创建容器的脚本
能够搭建与使用docker私有仓库
1 Docker简介
1.1 什么是虚拟化
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的
各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实
体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这
些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的
虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的
旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资
源充分利用
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化
(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。
1.2 什么是Docker
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业
余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵
从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为
Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品
中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是
Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,
使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简
单。
为什么选择Docker?
(1)上手快。
用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复
制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码
即改”的境界。
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即
可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机
中也可以运行更多的容器,使用户尽可能的充分利用系统资源。
(2)职责的逻辑分类
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心
如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要
部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境
都是正常的,上线后出了问题就归结为肯定是运维的问题)”
(3)快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应
用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,
里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒
子中一件件的取。)
(4)鼓励使用面向服务的架构
Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个
应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序
或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调
试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中
运行多个应用程序)
1.3 容器与虚拟机比较
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层
面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客
与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
1.4 Docker 组件
1.4.1 Docker服务器与客户端
Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务
器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提
供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行
Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上
的远程Docker守护进程。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客
1.4.2 Docker镜像与容器
镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命
周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步
构建出来。例如:
添加一个文件;
执行一个命令;
打开一个窗口。
也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更
新。
Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进
容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认
为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容
器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件
或者服务。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
传智播客
所以Docker容器就是:
一个镜像格式;
一些列标准操作;
一个执行环境。
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个
模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。
和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管
是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的
方式将内容“装载”进去。
Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传
到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主
机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通
用。
1.4.3 Registry(注册中心)
Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker
公司运营公共的Registry叫做Docker Hub。用户可以在