Docker (一):docker介绍
一、背景介绍
Docker是dotCloud公司(现已更名为Docker股份有限公司)的一款开源产品,从dotCloud公司于2013年将Docker开源到现在,短短几年的时间,就已经成为了开源社区炙手可热的项目,并且广受好评。随着Docker的流行,越来越多的优秀开发者加入了Docker社区参加开发,几乎所有的云计算公司,诸如Azure、Google和亚马逊等都支持Docker技术,Docker技术已经成为了云计算领域的一个重要组成部分。
二、什么是Docker
Docker实际上是一种容器技术,它使用容器引擎解决了平台依赖的问题。Docker在每天宿主机上都启动一个守护进程,守护进程屏蔽了与具体平台相关的信息,对上层应用提供统一的接口。通过这种方式,Docker化的应用就可以在多个平台上使用。java号称“Write once,Run anyWhere”,而Docker则是“Build once,Run anyWhere,Configure once,Run anything”。
实际上如果Docker和虚拟机是有些类似的,在Docker容器内运行的应用于具体的平台是无关的。当然,Docker和虚拟机虽然有些类似,但是它们是有本质的不同的。众所周知,虚拟机体积庞大,暂用的资源也非常多,就我个人而言,除非迫不得已,我通常不会选择使用虚拟机。而Docker在这一点上有极大的不同,Docker通过分层共享和增量更新的技术,极大的减小了体积,达到了轻量安装的方式,而它的开销远小于虚拟机。仅以启动时间来比较,Docker是微秒级的,而虚拟机则是分钟。
三、为什么使用Docker
在实际开发中我们经常会被一些繁琐的问题困扰,但是又不得不面对:
- 为了节约成本,公司成员之间或者项目组之间经常共用一台开发机,管理混乱,相互干扰
- 通常每个项目的开发环境都是不一样的,但同时进行多个开发任务的时候,不得不反复修改环境,以适应不同的开发任务
- 项目中的多个成员希望各自的开发环境保持一致,但是开发环境难以复制,即使初始环境一致,随着项目的滚动、开发环境的不断更新,最终也难以统一
- 当开发机出现故障需要更换机器的时候,不得不花费大量的时间重新搭建繁琐的开发环境
- 当需要调研测试新的软件时,安装配置文档繁琐,仅仅把软件安装、配置好就可能花费大半天的时间
...
以上这些问题都可以通过Docker解决:
- Docker化的应用使用容器虚拟化技术,每个应用都运行在独立的虚拟环境中,互相隔离,不用担心一机多用造成的混乱
- 当有多个开发任务时,可以并行启动这些应用的Docker容器,每一个Docker应用都有一个独立的运行环境,互不干扰
- 开发成员可以从Docker仓库中下载开发环境的镜像,确保大家的环境都是一致的。
- 开发机故障需要重新搭建环境时,只需要从仓库中拉下相关镜像,就可以在几分钟内重新搭建好环境, 而且和原来的环境是一样的。
- Docker的每个复杂的软件都可以做成镜像,分享给其他人使用。并且随着Docker的流行,几乎所有的主流软件都提供了Docker化的部署方式,软件部署变得更为简单。
四、安装docker
macOS:直接下载安装即可,地址:https://download.docker.com/mac/stable/Docker.dmg
CentOS:curl -sSL https://get.docker.com/ | sh
curl -sSL https://get.daocloud.io/docker | sh
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet
Ubuntu:curl -sSL https://get.docker.com/ | sh