Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,
然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
==============================================================
What is docker
1.什么是docker
Docker是一个基于Go语言的云开源项目。Docker提供高效、敏捷和轻量级的容器方案。Docker主要目标是“Build,Ship and Run Any App,Anywhere”。
Docker引擎的基础是Linux容器(LXC)技术。在LXC的基础上,Docker进一步优化了容器的使用体验,同时提供了各种容器管理工具(如分发、版本、移植等),让用户无需关注底层的操作。
2.docker的优势
(1)更快速的交付和部署。
(2)更高效的资源利用。docker容器的运行不需要额外的虚拟化管理程序(VMM),它是内核级的虚拟化,可以实现更高的性能,同时对资源的 额外需求很低。
(3)更轻松的迁移和扩展。docker容器几乎可以在任何平台上运行。
(4)更简单的更新管理。使用dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作,并且所有的修改都是增强进行的。
3.docker与虚拟机的比较
(1)docker容器很快,启动和停止可以在秒级别完成。
(2)docker容器对系统的资源需求很少,一台主机上可以同时运行数千个docker容器。
(3)docker通过类似git的操作来方便用户获取、分发、更新应用镜像,指令简单易学,学习成本低。
(4)docker通过dockerfile配置文件来支持灵活的自动化创建和部署机制,提供了工作效率。
==============================================================
docker三大核心概念:镜像、容器、仓库
1.docker镜像(image)
镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统。
创建镜像有三种方法:
(1)基于已有镜像的容器创建。主要是利用docker commit命令。
(2)基于本地模板导入。推荐利用OpenVZ提供的模板来创建。
(3)基于dockerfile创建。首先按照dockerfile的格式,编写好dockerfile文件,之后通过docker build命令来创建镜像。 docker build会读取制定的dockerfile,由docker服务器来创建镜像。
2.docker容器(container)
容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见的。可以把容器看做一个简易版的linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在这个环境上的应用打包而成的应用盒子。
镜像自身是自读的,容器从镜像启动的时候,docker会在镜像的最上层创建一个可写文件层,镜像本身保持不变。
可以利用docker create命令创建一个容器,创建后的的容器处于停止状态,可以使用docker start命令来启动它。也可以直接李东docker run命令来直接从镜像启动运行一个容器。docker run = docker creat + docker start。
当利用docker run创建并启动一个容器时,docker在后台的标准操作包括:
(1)检查本地是否存在指定的镜像,不存在就从公有仓库下载。
(2)利用镜像创建并启动一个容器。
(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
(4)从宿主机配置的网桥接口中桥接一个虚拟的接口到容器中。
(5)从地址池中配置一个IP地址给容器。
(6)执行用户指定的应用程序。
(7)执行完毕后容器终止。
3.docker仓库(Repository)
仓库是存放docker镜像的地方。仓库和注册服务器(Registry)还是有区别的。注册服务器是存放仓库的地方,在其中存放了很多仓库,每个仓库存放一类镜像文件。
仓库分为公有仓库和私有仓库,DockerHub是目前最大的公有仓库。可以通过docker push/pull命令从仓库中上传和下载镜像,docker search命令来搜索镜像。
==============================================================
Docker Hub最受欢迎的10个镜像
排名最高的10个官方库
Rank Repository Stars
1 Ubuntu 2,007
2 Centos 1,164
3 Nginx 1,163
4 Redis 957
5 Node 891
6 Postgres 889
7 Mysql 885
8 Mongo 796
9 Debian 573
10 Jenkins 508
==============================================================
什么是容器云
容器为用户打开了一个通往新世界的大门,但是真正进入到容器世界之后,却会发现新的生态系统如此庞大,在生产环境中,不论是个人还是企业都会提出更复杂的需要,我们需要跨主机的容器协同工作,需要支持各种类型的工作负载,需要多人协作持续集成,需要持续的交付平台。这样,容器相关的网络、存储、高可用性就不得不面对。这就必然的从容器走向了 容器云。
容器云以容器为资源分割和调度的基本单位,封装整个软件的运行时环境,为开发者和系统管理者提供用于构建、发布和运行分布式应用的平台。
容器云最直观的形态就是一个颇具规模的容器集群,它按照功能或依赖敏感性划分成组,不同容器组之间完全隔离,组内容器运行一定程度的共享。容器之间不再简单的依靠docker --link这类的原生命令进行组织,而是借助全局网络管理组件来进行统一管理。容器云的用户也不需要再直接面对docker api,而是借助某种控制器来完成用户操作到docker容器之间的调用转译,从而提供更加友好的UI。
当容器云专注于资源共享与隔离,容器编排与部署时,她更接近传统的Iaas,当容器云渗透到应用支持与运行时环境时,它更接近与传统的Paas。
What is docker
最新推荐文章于 2024-09-22 00:02:59 发布