Docker大行其道—初识

导读 随着分布式、云计算、大数据的火热爆发,大量的云计算集群出现,光凭计算机硬件配置的已经无法再次一较高下,虚拟化成为其中最核心的技术。虚拟化既可以通过硬件模拟,也可以通过操作系统层面去实现,近年来热火朝天的容器轻量级虚拟化,保留了操作系统本身的机制和特性,而Docker在此脱颖而出。

Docker的前世今生

Docker是基于Go语言实现的云开源项目,目前归于Apache基金会并遵循Apache 2.0协议。诞生于2013年初,前身公司为dotCloud,docker开源后得到受到社会广泛的关注,docker的生态圈体系也逐渐成熟,这家公司也改名为Docker Inc,专注于Docker相关技术和产品开发。

Docker最大的目标是:“Build, Ship and Run Any App, Anywhere!”。你只需要通过对应用组件的一次的封装,就能在任意地点构建和运行你的应用。无论是一个完整的应用,或者是某些微服务,甚至到一个完整的操作系统都能成为docker的应用组件。Docker提供一个高效、敏捷和轻量的容器方案,能动态适应各种规模的系统部署需求。

Docker整个生命周期包含三部分:镜像(Image),容器(Container),仓库(Repository)。镜像和容器的关系就像程序和进程,镜像是容器运行的一大前提,而容器则是镜像的一个运行实例。仓库则是镜像的管理中心,默认的镜像仓库为Docker Hub。

Docker运行容器前需要检查本地是否存在对应的镜像,如果不存在,会尝试从默认的镜像仓库下载。镜像实例化之后运行着一个完整的容器,容器除了镜像本身的内容外,还提供额外的可写文件层以及相对独立的运行环境(可能是一些应用或者服务,也可能是完整的操作系统)。

作为一个C/S模型的项目,Docker通过Docker Host进行镜像、容器、守护进程、分区等的管理,同时在Docker Client进行镜像的拉取,容器的构建等操作,通常情况下Host和Client可能会在同一台机器上。

Docker开源代码地址:https://github.com/docker/docker

Docker得天独厚的优势

新的部署方式

假如当前有这么一个场景:“由于业务增长,公司的一个网站项目需要迁移到新的服务器”。按照传统方案,我们很可能需要作一些重复性的工作。首先需要在新的服务器上安装对应的运行环境以及对应的依赖,如LAMP(Linux+Apache+Mysql+PHP),创建对应的用户或组并进行文件权限的管理,耗费大量的精力后,还需要对该环境进行测试,最后才能部署上线。试想一下,如果这样的需求多少十几倍,这些工作需要重复的执行。

也许你会说可以通过虚拟化的技术将整个环境打包成镜像再进行部署,加入新的服务器本身也是一台虚拟化的机器,再加上一层xen(或者其他虚拟机)去部署显然显得多余了。

而Docker提供一种极为简便的操作方式,通过容器来进行应用打包,我们可以通过封装成镜像或是编写Dockerfile等方式来进行打包,这意味着在新的服务器上只需要启动所需要的容器即可。一来节省了大量的时间投入,而来降低了部署过程出现问题带来的隐患。

运维策略的革新

1. 极速交付和部署

使用docker,开发人员可以使用镜像快速构建一套标准的开发环境。之后的测试和上线环节完全可以复用这套镜像将应用部署到测试环境或生产环境等任意地方。Docker可以快速创建、删除容器,并保留了每一个步骤的配置和操作过程,降低开发、测试、部署的时间的同时让环境部署更容易被理解。通过简单的配置文件修改,就能轻松完成一次运行环境的迭代,所有操作都可以以增量的形式进行分发和更新,从而实现自动化和高效的容器管理。

2. 性能损耗低

事实上docker是内核级别的虚拟化,不需要额外的虚拟化管理程序,因此开启docker对性能的损耗几乎忽略不计。

3. 轻便易迁移拓展

Docker几乎支持任意平台运行,无论是物理机还是虚拟化的主机,甚至个人电脑都能兼容运行docker,这种兼容性可以让应用更方便切换运行平台。

4. 规范化的标准

Docker背后的标准化容器执行引擎 - runC。runC是由docker贡献后续完善的一个开放的工业化标准,其主要内容:

  • 操作标准化:容器的标准化操作包括使用标准容器感觉创建、启动、停止容器,使用标准文件系统工具复制和创建容器快照,使用标准化网络工具进行下载和上传。
  • 内容无关:内容无关指不管针对的具体容器内容是什么,容器标准操作执行后都能产生同样的效果。如容器可以用同样的方式上传、启动,不管是php应用还是mysql数据库服务。
  • 基础设施无关:无论是个人的笔记本电脑还是AWS S3,亦或是Openstack,或者其他基础设施,都应该对支持容器的各项操作。
  • 为自动化量身定制:制定容器统一标准,是的操作内容无关化、平台无关化的根本目的之一,就是为了可以使容器操作全平台自动化。
  • 工业级交付:制定容器标准一大目标,就是使软件分发可以达到工业级交付成为现实。

5. 集群管理

Kubernetes是Google开源的Docker容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。

关于Docker和虚拟机的比较,请参考:http://www.linuxprobe.com/docker-and-vm.html

关于Docker的标准,请参考:http://www.open-open.com/lib/view/open1444481959869.html

文章小节

全文主要对docker进行概念性的介绍,想必读到这里,docker再也不会是一个陌生的技术。无论是在针对应用的自动化运维还是PAAS的管理策略,docker都能提供一套优秀的解决方案,docker在领域内倍受青睐,让运维的工作有了前所未有的优质体验。如果你也被docker的魅力深深折服的话,欢迎加入到docker的学习行列一同探索。

时间: 2024-08-03 03:01:05

Docker大行其道—初识的相关文章

Docker大行其道—镜像

导读 作为Docker三大核心概念之一,Docker镜像(Docker Image)是一个面向Docker引擎的只读模板,包含文件系统.实际上每个Docker镜像包含一个独立的运行环境,如一个镜像包含centos操作系统环境,我们称之为一个centos镜像. Docker运行一个容器实例之前,可以以一个镜像为基础环境,如以一个包含centos操作系统的Docker镜像为模板.建立容器之前,Docker会检查本地是否存在对应的镜像,如果镜像不存在本地,Docker会尝试从默认的镜像仓库(Repos

docker 概念初识

1 docker 优势,一次创建或配置可以在任意时间.任意环境让应用正常的运行. 快速交付和部署,开发人员可以使用镜像快速构建一套标准的开发环境:开发完后测试和运维人员可以直接使用相同的环境来部署代码. 更轻松的迁移和扩展,docker容器可以在任意平台上运行,包括物理机.虚拟机.公有云.私有云.个人电脑.服务器等. 更简单的更新管理,使用 dockerfile 只需修改配置就可以代替以前的大量更新工作. 2 概念区分:镜像.容器.仓库 2.1 docker镜像:类似于虚拟机镜像,可以理解为面向

docker初识

虚拟机:通过中间层,将一台或者多台独立机器,运行在物理硬件之上! 容器:直接运行在操作系统的内核之上的用户空间,由于依赖于操作系统的特性,所以容器只能运行在相同的后者相似的内核的操作系统之上 docke依赖于linux的内核特性:namespace 和Cgroups,所以docker只能运行在linux系统,而不能用在windows系统,这也是容器技术相对虚拟机技术在系统灵活性上的劣势 容器技术的优点:磁盘占用空间更少!使用虚拟机部署应用,不但包含了应用和他所依赖的各种库,还需要包含完整的操作系

初识Docker

最近总是会看到关于Docker的文章,大概了解了一下,就想在自己电脑试试. 1.下载并安装Docker for windows.需要win10系统.其他windows系统想要安装貌似要麻烦点了. 2.创建一个asp.net Core WepApi程序. 3.使用默认创建的value控制器即可. 4.指定一下端口号为8010,在Program.cs下如下修改. 5.打开cmd,进入webapi项目的根目录.然后执行 dotnet run. 6.出现一下结果就是成功了. 7.然后打开浏览器,http

初识容器与Docker

### 这周学了虚拟化的概念,了解了虚拟化的分类:模拟,完全虚拟化,半虚拟化(准虚拟化),库级别的虚拟化,应用虚拟化,容器级虚拟化(操作系统级别虚拟化)等 #### 认真了解了Docker的诞生及发展历史,以及在什么场景下,将发挥巨大的优势,给我们带来巨大的便利. 场景:为应用的开发.运行和部署提供了"一站式"的实用解决方案,达到应用组件(比如一个web应用.一个编译环境.一套数据库平台甚至是一个操作系统或集群等)"一次构建/封装,到处运行".

第一章 初识Docker

1.1什么是Docker Docker开源项目 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系.dotCloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品的开发. Docker项目目前已加入了Linux基金会,遵循Apache 2.0协议,全部开源代码均在https://github.com/docker/docker

docker-1 初识docker

五分钟认识docker 什么是docker? 把他想象成一个用了一种新颖方式实现的超轻量虚拟机,在大概效果上也是正确的.当然在实现的原理和应用上还是和VM有巨大差别的,并且专业的叫法是应用容器(Application Container). 为啥要用docker? 那么应用容器长什么样子呢,一个做好的应用容器长得就好像一个装好了一组特定应用的虚拟机一样.比如我现在想用MySQL那我就找个装好MySQL的容器,运行起来,那么我就可以使用 MySQL了. 那么我直接装个 MySQL不就好了,何必还需

docker初识 一

安装docker:(主要介绍如何从基础系统部署docker) 1.使用root用户身份添加apt源添加public key使docker的安装源授信 curl -s 'https://sks-keyservers.net/pks/lookup?op=get&search=0xee6d536cf7dc86e2d7d56f59a178ac6c6238f52e' | sudo apt-key add --import 2.安装apt的https支持 sudo apt-get update &&a

Docker02 Docker初识:第一个Docker容器和Docker镜像

目录 [TOC] 一.第一个Docker容器 使用docker run 命令时,如果在本地没有改镜像,那么会直接重Docker Hub(一个官方的镜像库)中拉取镜像. docker run --rm hello-world # 运行结果展示 Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pulling fs layer docker: