手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭
Docker,技术

初识Docker

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的Logo,官网:https://www.docker.com/ ,源码:https://github.com/docker/docker-ce

简单来说Docker是一个容器,分为主机和宿机,就好比docker的logo中形容的一艘船上有很大多集装箱。船就相当我们的主机,集装箱就相当的我们的宿机。每个宿机都是独立的。里面都有自己的一套系统。在主机中宿机就相当主机中的一个进程。宿机可以共享主机资源。就我们常说的数据的挂载到宿机的相关目录。

Containers are portable

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC-Linux Container)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

每个虚拟机都将拥有自己的操作系统以及应用程序必须的运行时环境
多个容器公用宿主机操作系统,每个容器拥有独立的应用程序运行时环境

Docker 是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟化方式则是在硬件层面实现。

一个完整的Docker有以下几个部分组成:

1.DockerClient客户端
2.Docker Daemon守护进程
3.Docker Image镜像
4.DockerContainer容器

Docker architecture

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镜像运行Docker容器

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


历史上的今天:

展开阅读全文


上一篇:

下一篇:

您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
关注我的公众号每天为您分享各类有用信息
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
分享录多端跨平台系统
分享录交流群