Docker实在是太强大了,诸如各种Linux系统(CentOS、Ubuntu、Debian等)、Nginx、Tomcat、Apache、RabbitMQ、Jenkins、Redis、MySQL、MongoDB、GitLab、SVN、Java、PHP、Python等等都可以在docker的容器里跑,因此我决定写个系列来积累并持续更新相关内容,因为后续很多文章都是基于Docker来就行。
Docker是由dotCloud公司开发到,2008年Solomon Hykes和他的朋友 Kamel Founadi、Sebastien Pahl 共同创立了一家名为 Dotcloud 的公司,目标是利用一种叫做容器的技术来创建他们称作是“大规模的创新工具”:任何人都可以使用的编程工具,当时他 24 岁。Dotcloud主要提供的是基于 PaaS(Platform as a Service,平台及服务)平台为开发者或开发商提供技术服务,并提供的开发工具和技术框架。2013年Dotcloud 变成 Docker,组成了一个以 5 人为核心的团队:Eric Bardin, Sam Alba, Jerome Petazzoni, Julien Barbier 以及 Solomon Hykes 本人。Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是Docker提出的”Build once,Run anywhere“。
在互联网时代,一夜成名早已不是什么新闻。Docker 这个技术公司,向我们证明了,成为一个”国际巨星”,只需要一个月。2013年2月决定开源,到2013年3月20日发布Docker0.1,只用了一个月的时间。从Docker0.1到Docker1.0,15个月的时间,Docker迅速成长。在2014年6月9日,Docker团队宣布发布Docker 1.0版。
到了2014年9月,Docker完成4000万美元的C轮融资,彼时市值已约为4亿美元。可以说Docker一路风生水起,迅速赢得了IT圈的信赖。然而好景并不长,网上有消息说:“要说Docker在2017年的日子非常难过,那已经算是轻描淡写了。除了优步(Uber)外,我实在想不出还有哪一家更加被利用、被炒作、资金充裕的硅谷初创公司(仍在运营之中)像Docker在2017年那样步履维艰、糟糕透顶。回顾2017年,人们会记得在这一年,Docker这款优秀的软件完全毁于糟糕的经营方法,导致Docker公司在2018年寿终正寝。”
2018年3月28日,Docker 创始人 Solomon Hykes 今日在 Docker 博客上宣布已正式从 Docker 公司离职,不再担任公司的日常运作工作。而对于未来的计划,Solomon Hykes 没有向我们透露太多,表示会利用自己的经验,以任何方式为朋友、家人和优秀企业家提供帮助。
不管docker公司经营如何,其产品依然强悍的运行着。官网这样描述Docker:
Docker: The Modern Platform for High-Velocity Innovation
The only independent container platform that enables organizations to seamlessly build, share and run any application, anywhere—from hybrid cloud to the edge.
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 或Mac机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。2013年发布至今,Docker一直广受瞩目。有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。
简单来说Docker是一个容器,分为主机和宿机,就好比docker的logo中形容的一艘船上有很大多集装箱。船就相当我们的主机,集装箱就相当的我们的宿机。每个宿机都是独立的。里面都有自己的一套系统。在主机中宿机就相当主机中的一个进程。宿机可以共享主机资源。就我们常说的数据的挂载到宿机的相关目录。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC-Linux Container)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker 是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟化方式则是在硬件层面实现。
一个完整的Docker有以下几个部分组成:
1.DockerClient客户端
2.Docker Daemon守护进程
3.Docker Image镜像
4.DockerContainer容器
Client( Docker客户端) Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信。
Docker daemon(Docker守护进程) Docker daemon是一个运行在宿主机(DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。
Images(Docker镜像) Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行Docker镜像中的程序。
Container(容器) 容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过Docker API或者CLI命令来启停、移动、删除容器。
Registry(仓库) Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助Docker Registry来避免镜像的手动复制。
一个Docker Registry可包含多个Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个Docker镜像。这跟Maven的仓库有点类似,如果把Docker Registry比作Maven仓库的话,那么Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。
Docker Registry可分为公有Docker Registry和私有Docker Registry。最常用的Docker Registry莫过于官方的Docker Hub,这也是默认的Docker Registry。Docker Hub上存放着大量优秀的镜像,我们可使用Docker命令下载并使用。
Docker镜像的内容主要包含两个部分:第一,镜像层文件内容;第二,镜像json文件。
Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。
国内一些镜像地址:
docker官方中国区: https://registry.docker-cn.com
网易: http://hub-mirror.c.163.com
中国科技大学: https://docker.mirrors.ustc.edu.cn
阿里云: https://pee6w651.mirror.aliyuncs.com https://rflxlgcf.mirror.aliyuncs.com
历史上的今天:
展开阅读全文
上一篇: 教你快速免费零基础也能建博客网站