1.认识下Docker

这篇具有很好参考价值的文章主要介绍了1.认识下Docker。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Docker为什么会火?

Docker能火起来,不仅仅与它开源有关系,一定是解决了我们软件从开发到上线的痛点,要不然几乎不可能。那Docker到底解决了什么问题?下面这几点,相信我们程序员都深有感触:

1. 解决环境不一致的问题

程序员经常说的一句话:“不可能有问题啊!我本地是好的啊!”。但是有时候线上确实是无法正常运行,可能经过很长时间的排错,最后发现某个第三方包或者运行时环境和本地不相同,并且这种排错是非常耗时的。

1.认识下Docker,Docker,docker,容器,虚拟机

2.解决服务器繁多复杂的软件安装问题

我们拿一个普通的java-web项目来说,要部署这个项目,那我就需要jdk、tomcat、nginx、Mysql、redis等等软件中间件

  1. 部署一个节点运行,这时候我们至少需要两个环境:测试和生产环境。这时候我们就告诉运维,需要安装这些软件,并且还要告诉运维详细的版本。运维同学拿到需求后,首先部署一套测试环境,费劲巴拉的弄完,还需要再费劲巴拉的部署一套生产环境,好不容易弄完了,并且都是重复的工作;
  2. 假如这时候我需要扩容,部署一个集群,比如需要我的应用需要4个节点,这是运维同学就需要另外再至少部署三台的java运行环境;如果我的MySql需要主从,那么运维同学就需要再装一从库;假如我需要Redis做主从,运维同学还需要至少要搞个哨兵;
  3. 很多服务器上的软件安装也并不是特别容易,对于开发者来源,他可能没有这么强的能力搞定这些东西,那么就会对运维同学产生强依赖,导致离开运维之后,我们的软件就没法上线部署。

3.docker生逢其时

2013年Docker诞生之时,正值企业应用转向互联网应用高速发展时期,应用小型化微服务化的需求正好是其用武之地,也就是适应了今天流行面更广的微服务的一个方面—应用部署到容器中运行。这样就解决了服务拆分后快速上线部署,同时,在遇到大流量扩容方面,可以很容易就进行扩容,再也不需要再安装那么多软件,配置那么多环境,弄完还要调试等等繁琐的事情,达到了快速扩容,同时也保证了扩容时程序的稳定性(因为是同一个镜像,容器内的运行环境是一样的)

那么针对第一个问题,主要还是从开发者来说,如果我的程序能和它所依赖的环境一起打一个包交给运维,那么测试和生产部署就会更顺畅,因为任何地方运行我的程序都是一样的,因为环境都一样;

针对第二个问题,从运维角度来看,如果所有的这些重复安装的工作能省掉就行了,或者我安装一次,其他的直接复制就行(当然,运维肯定是有这种工具);

从开发者角度来看,要是这些软件能和我的软件一样,把环境和软件打一个包,我直接傻瓜式的一启动就安装好,那我是不是就不再强依赖运维了,开发者自己也能够部署项目了,省去了那些极其繁多复杂的软件安装问题。Docker 公司的口号:Build,Ship,and Run Any App,Anywhere

正式因为许许多多的开发者一直面临着这些问题,所以docker一开源,立马就收到了广大开发者的推崇,使得docker很快就大火,甚至可以说的又红又紫。所以docker能大火,由数以万计的程序员推动起来的。

2.Docker历史

2.1 Docker的发展史

2010年,几个搞IT的年轻人,在美国成立了一家公司,dotCloud。他们做的是 pass的云计算服务,其中他们用到了LXC(Linux Containers)有关的容器技术!

注意:LXC并不是docker公司的,而是linux原生支持的容器技术。

下面链接是LXC的基本介绍,可以看一下:https://blog.csdn.net/qq_44281591/article/details/132251767

他们这个东西并没有引起别人的重视,以至于自己的公司活下去都比较难了,所以在2013年,他们选择将自己容器化技术开源,起名为docker。Docker开源后,越来越多的人发现Docker的优点,Docker开始火了,每个月都会更新一个版本。2014.4.9,Docker1.0发布。所以,有时候开源是可以拯救一个公司的。

2.2 Docker的不同版本

最早的时候docker就是一个开源项目,主要由docker公司维护。2017年年初,docker公司将原先的docker项目改名为mobyhttps://github.com/moby/moby,并创建了docker-ce和docker-ee。

这三者的关系是:moby是继承了原先的docker的项目,是社区维护的的开源项目,谁都可以在moby的基础打造自己的容器产品。docker-ce是docker公司维护的开源项目,是一个基于moby项目的免费的容器产品;docker-ee是docker公司维护的闭源产品,是docker公司的商业产品。moby project由社区维护,docker-ce project是docker公司维护,docker-ee是闭源的。使用免费的docker,从网页docker-ce上获取;要使用收费的docker,从网页docker-ee上获取。

3.容器化技术

到这里我们看到,其实容器化也可以算是虚拟化的一种,在之前包括现在,我们都还会使用虚拟机化技术,最常见的就是Vmware在我们自己的电脑上虚拟出多个主机来。用过虚拟机的同学可能知道,我只要配置好一台,做出一个镜像,其他虚拟主机的安装就好装了,直接克隆出来就行了,配置环境都是一样的,所以这么看,docker的容器化技术也没有比虚拟机来的更好。但事实真的是这样么?随着我们不断的使用和比较,我们发现,docker容器技术在我们开发运维过程中,确实比虚拟机技术好用太多了,甚至可以说是两种完全同的技术方案。

Docker容器化技术与虚拟机技术的不同:

3.1 虚拟机

我们常用的虚拟机是Vmware,使用的是windows电脑, 我想要模拟一台linux服务器, 方便部署应用, 在windows上安装了一台虚拟机,我就能够用有一台Linux的机器了。
1.认识下Docker,Docker,docker,容器,虚拟机

  • 基础服务(Server):可以理解成我们的个人电脑,数据中心的服务器,或者是云主机。
  • 主操作系统(Host OS):你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
  • 虚拟机管理系统(Hypervisor):利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。
  • 子操作系统(Guest Operating System):假如我们需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个子操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存.

这样构建出来的虚拟机,是和真机具有一样功能的机器,它需要有自己的内核、有自己的各种lib库,需要安装各种应用软件服务,并且本身比较笨重,启动速度也非常慢。

3.2 Docker容器

1.认识下Docker,Docker,docker,容器,虚拟机

  • 基础服务(Server):可以理解成我们的个人电脑,数据中心的服务器,或者是云主机。
  • 主操作系统(Host OS):你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
  • Docker引擎(Docker Engine):Docker Engine 取代了Hypervisor,他是运行在主操作系统之上的后台进程,负责管理docker容器。
  • 各种依赖(libs):对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的;
  • 应用(app):应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

所以从docker容器来看,它会共享主机的Kernel内核,不需要模拟各种硬件、只需要少量的必须库lib就可以啦。这里要说明一点,我们说docker容器会共享Kernel内容,那么我们在centos上为什么能运行Ubuntu的容器?

这里我们首先要区分下Linux内核与Linux发行版。

  • Linux内核是Linux系统的核心,负责硬件管理,比如管理内存、管理磁盘(文件系统)、管理cpu(进程)等等;
  • Linux发行版是在Linux内核基础上添加了一些工具软件,比如图形界面、函数库、软件包管理等。

所以,CentOS 与 Ubuntu 是不同的 Linux 发行版, 它们都是基于 Linux 内核, 只是添加的工具软件不同。比如, 他们的软件包管理系统不同, CentOS 使用 yum 命令安装软件, 而 Ubuntu 使用 apt-get 命令安装软件。这样,在 CentOS 上运行基于 Ubuntu 镜像的容器时,容器使用了 CentOS 主机的内核以及 Ubuntu 镜像,Ubuntu 镜像中安装了 Ubuntu 的各种软件(apt-get)。

那我们可能还会有疑问,那windows为什么能运行centos的容器?centos和windows的内核可是绝对不一样的啊!Docker 公司开始推出自己的 Docker for Windows 工具包,它旨在为开发人员在 Windows 上开发面向 Docker 的应用程序提供完整的工具链,其中包括运行环境、客户端,Docker Swarm 编排工具和其他工具。Docker for Windows 中负责运行环境配置的工具是 Docker Machine。与 boot2docker 类似,Docker Machine 也会在 Windows 上创建一个 Linux 虚拟机,用于运行 Docker 引擎。

3.3 Docker与虚拟机的区别

  • 传统虚拟机, 虚拟出一条硬件,运行完整的操作系统, 然后在这个操作系统上安装和运行软件;而Docker容器内的应用直接安装在主机的内核上, 容器没有自己的内核, 也没有虚拟的硬件, 所以就轻便了.由于没有臃肿的子操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

  • 容器的启动速度很快, 一般在几毫秒~几十毫秒;

  • 应用场景不同。虚拟机更擅长于彻底隔离整个运行环境.例如,云服务提供商通常采用虚拟机技术隔离不同的用户。Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

  • 容器和虚拟机相比, 可以更多的利用起来小块的闲置资源,它们不运行完整的操作系统。

  • 性能对比:
    1.认识下Docker,Docker,docker,容器,虚拟机

3.4 docker容器化技术在DevOps(开发,运维)中的作用

  • 应用更快速的交付和部署

    • 传统: 每台服务器要安装哪些应用, 配置哪些环境变量, 安装顺序, 都会一一记录到帮助文档
    • docker: 打包镜像, 一键运行.
  • 更便捷的升级和扩缩容

    • 传统: 需要安装软件, 部署, 重复工作
    • docker: 部署应用就像搭积木, 项目打包为一个镜像, 扩展服务器非常方便.
  • 更简单的系统运维

    • 在容易化部署之后, 我们的开发, 测试环境都是高度一致的, 不会出现在开发耗时, 部署到测试,线上不好使的情况
  • 更高效的利用计算机资源

    • docker是内核级别的虚拟化, 可以在一个物理机上运行很多个容器实例, 服务器的性能可以被压榨到极致.

      通常, 一台主机只能同时运行2-3个虚拟机, 但是可以同时运行20-30个容器

3.5 Docker容器学习官网

  • docker官网: https://www.docker.com
  • docker文档: https://docs.docker.com/ docker的文档非常详细
  • docker仓库: https://hub.docker.com/

4.什么是Docker?

1.认识下Docker,Docker,docker,容器,虚拟机

上面这个图片就是Docker的log,这是一条鲸鱼,鲸鱼上载满了集装箱。官方团队对Logo的解释:The logo is a Whale carrying a stack of containers. It is on its way to deliver those to you。Docker直译过来是码头工人,然而Docker给人的第一感觉是容器,容器技术英译为Linux Container, Container的直译有集装箱,容器两个意思,如果要形象的理解Linux Container的话还是叫集装箱技术比较好(可以结合着上图及LOGO理解这句话),由于中国本土文化,念集装箱技术会比较奇怪,所以我们都称之为容器技术。

我们都知道码头里的集装箱是运载货物用的,它是一种按规格标准化的钢制箱子。集装箱的特色,「在于其格式划一,并可以层层重叠, 集装箱与集装箱之间互不影响」。IT领域借鉴了这一理念,我部署一个服务运行好后,我再想移植到另外一个地方,**不用再安装一套操作系统和依赖环境。**这就像集装箱运载一样,我把一辆特斯拉(好比开发好的应用APP+环境),打包放到一容器集装箱里,它通过货轮可以轻而易举的从青岛港(CentOS7.2环境)运送到天津港(Ubuntu14.04环境)。而且运输期间,我的特斯拉(APP+环境)没有受到任何的损坏(文件没有丢失),在另外一个天津港卸货后,依然可以(启动正常)。

为了更好的理解docker,我们再讲一个小故事。张三想在天津要造一栋别墅,他重金请来了高级设计师,高级建造师,等各种高级工人,热火朝天历时多半年,房子建成了,半年后,张三由于工作调动需要换到另一个青岛,他只好在青岛花了重金又打造了一栋别墅;

而张三有一个朋友李四,跟李四是同样的场景,唯一不同的是,李四认识一个天神,天神施展了法术(构建镜像),将李四的别墅直接复制了一份(镜像),装到了李四的双肩包(仓库)里,李四去到另一个城市找了一片空地(容器)直接将装在双肩包(仓库)里的房子拿了出来,拿出来的房子就能变成跟李四在原城市一模一样的房子。那么我们说,不论天津还是青岛,这块土地都是一样的东西(同一个内核),房子就是容器。听完了故事,咱们再来理解docker的两句口号就更好理解了

  • 「Build, Ship and Run (搭建,发送,运行)」
  • 「Buildonce,Runanywhere (搭建一次,运行到任何地方)」

所以要给Docker下一个定义的话:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。文章来源地址https://www.toymoban.com/news/detail-739211.html

到了这里,关于1.认识下Docker的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 橘子学K8S04之重新认识Docker容器

    我们之前分别从 Linux Namespace 的隔离能力、Linux Cgroups 的限制能力,以及基于 rootfs 的文件系统三个角度来理解了一下关于容器的核心实现原理。 这里一定注意说的是Linux环境,因为Linux Docker (namespaces + cgroups + rootfs) != Docker on Mac (based on virtualization) != Windows Docker (based on virtual

    2024年01月19日
    浏览(35)
  • Docker容器与虚拟化技术:Docker架构、镜像操作

    目录 一、理论 1.Doker概述 2.Docker核心概念 3.Docker安装 4.Docker的镜像管理命令 二、实验 1.Docker安装 2.查看Docker信息 3.Docker的镜像管理命令 三、问题 1.如何注册Docker账号  2.如何设置Docker公共存储库 四、总结 (1) IT架构 裸金属 → 虚拟机 → 容器→ 函数化、代码化 云计算涌现出很

    2024年02月10日
    浏览(50)
  • Docker容器与虚拟化技术:Docker架构、镜像管理

    目录 一、理论 1.Doker概述 2.Docker核心概念 3.Docker安装 4.Docker的镜像管理命令 二、实验 1.Docker安装 2.查看Docker信息 3.Docker的镜像管理命令 三、问题 1.如何注册Docker账号  2.如何设置Docker公共存储库 四、总结 (1) IT架构 裸金属 → 虚拟机 → 容器→ 函数化、代码化 云计算涌现出很

    2024年02月13日
    浏览(47)
  • Docker容器与虚拟化技术:Docker-Compose

    目录 一、理论 1.Docker-Compose 二、实验 1. Docker Compose 安装部署 2.Docker Compose撰写nginx 镜像 3.Docker Compose撰写tomcat 镜像 三、问题 1.Docker Compose 和 Dockerfile 的区别 四、总结 (1)使用场景 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务

    2024年02月12日
    浏览(47)
  • 虚拟化容器化与docker

    物理机 : 实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。 虚拟化 :是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算

    2024年02月16日
    浏览(41)
  • 基于虚拟容器docker的个人博客

    人们研究虚拟现实技术的初衷是“计算机应该适应人,而不是人适应计算机”。虚拟现实技术的目标或理念是要逐步使“计算机适应人”,人机交互不再使用键盘、鼠标等,而是使用数据手套、头盔式显示器等,通过视觉、听觉、触觉、嗅觉,以及形体、手势或口语等媒体形式,参与

    2024年04月08日
    浏览(79)
  • Docker容器与虚拟化技术:Docker compose部署LNMP

    目录    一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.准备Nginx镜像 4.准备MySQL容器 5.准备PHP镜像 6.上传wordpress软件包 7.编写docker-compose.yml 8.构建与运行docker-compose 9.启动 wordpress 服务  10.浏览器访问 11.将运行中的 docker容器保存为 docker 镜像并保存到本地tar包 二、实验  1.环境

    2024年02月11日
    浏览(41)
  • Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

    目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像(基于SSH镜像) 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像(基于SSH镜像) 三、问题 1.nginx网页打不开  2.Apache容器启动一直为Ex

    2024年02月12日
    浏览(62)
  • 【Docker】Docker中Linux 容器、网络虚拟化与虚拟局域网的技术特点详细讲解

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月09日
    浏览(46)
  • 【Docker】容器化和虚拟化基础

    1979 年 贝尔实验室发明 chroot chroot的设计原理是:把一个进程的文件系统隔离起来。 ​ chroot 系统调用可以将进程及其子进程的根目录更改为文件系统中的新位置。隔离以后,该进程无法访问到外面的文件,因此这个被隔离出来的新环境像监狱一样,被命名为 Chroot Jail (监狱

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包