用Docker能做什么
这篇文章主要介绍"用Docker能做什么",在日常操作中,相信很多人在用Docker能做什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"用Docker能做什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1.0 容器的简介
容器与管理程序虚拟化的不同点:
管理程序虚拟化通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上;
容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为"操作系统级虚拟化"。
由于客居于操作系统,容器只能运行与底层宿主机相同或相似的操作系统。
和传统的虚拟化以及半虚拟化相比,容器运行不需要模拟层和管理层,而是使用操作系统的系统调用接口,降低了开销。
当然容器也有一些局限性,比如它被一些人认为是不安全的、它的技术比较复杂、不易安装和自动化。
1.1 Docker简介
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。它的目标是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效的将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。
Docker希望为程序开发提供以下功能:
提供一个简单、轻量的建模方式。用几分钟可以把自己的程序Docker化,并用"写时复制"模型,使修改应用程序也非常迅速。创建容器来运行应用程序也很快速,并且一台宿主机可以运行很多容器,使用户可以尽可能充分的利用系统资源。
职责的逻辑分离。使用Docker,开发人员只需要关系容器中运行的应用程序,而运维人员只需要关系如何管理容器。同时加强开发人员写代码的开发环境与应用程序要部署的生产环境的一致性。
快速、高效的开发生命周期。Docker的目的之一就是缩短代码从开发、测试到部署、上线运行的周期,让应用程序具有可移植性、易于构建,并易于协作。
鼓励使用面向服务的架构。Docker推荐单个容器只运行一个应用程序或进程,这样就能形成一个分布式的应用程序模型。在这种模型下,应用程序或服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得简单。
1.2 Docker组件
Docker客户端和服务器。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程完成所有工作并返回结果。Docker提供了一个命令行工具docker以及一套RESTful API。可以在同一台宿主机上运行守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
Docker镜像。镜像是构建Docker世纪的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的"构建"部分。镜像是基于Union文件系统的一种层式的结构,由一系列指令一步步构建出来。也可以把镜像当做容器的"源代码"。镜像体积小,便携,易于分享、存储和更新。可以使用已有的镜像,也可以构建自己的镜像。
Registry。Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营的公共Registry叫做Docker Hub。用户可以在其上注册账号,分享并保存自己的镜像。Docker Hub上的镜像包括Nginx Web Server的镜像、MySQL数据库的镜像等等。也可以假设自己的私有Registry。
容器。Docker可以帮助构建和部署容器,只要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器使启动或执行阶段。总结起来,Docker容器就是:一个镜像格式,一系列标准的操作和一个执行环境。
1.3 我们能用Docker做什么
加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中构建,然后轻松的提交到测试环境中,并最终进入生产环境;
能够让独立服务或者应用程序在不同的环境中得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署中尤其实用;
用Docker创建隔离的环境来进行测试。例如,用Jenkins CI这样的持续集成工具启动一个用于测试的容器;
Docker可以让开发者先在本机上构建一个复杂的程序或者架构来进行测试,而不是开始就在生产环境部署、测试;
构建一个多用户的平台即服务基础设施;
为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学;
提供软件即服务应用程序,如Memcached即服务;
高性能、超大规模的宿主机部署。
到此,关于"用Docker能做什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!