开新坑了,开始挖坑Docker了,兄弟们。为什么需要Docker呢?Docker是什么?这里开始揭开Docker的面纱。

一、为什么需要Docker

可能每个开发人员都有一种困扰,软件开发完之后部署项目,明明测试环境部署了一点问题没有,怎么一到正式环境就出错呢?

这种情况有时候问题可能就出在环境配置上,操作系统版本是否一致,软件运行依赖库版本是否一致,操作系统设置是否一致......等等都有可能造成部署失败。

那么有没有一种办法可以保持所有机器的环境配置都一致呢,这样同时也方便我们迁移系统,不然每次扩容部署就要重新配置一台机器的环境,这种繁琐的工作能不能配置好一次,之后就复用呢?

答案是有,这时候就提出了一种方案,虚拟机(大家应该都知道是啥吧,就不啰嗦了)。

虚拟机对于操作系统来说只是一个文件,如果需要多个只需要把虚拟机导出为ova文件,安装后即和导出的系统环境一摸一样,这样就解决了环境配置繁琐的问题,这样可以说 99.9999% 项目跑不起来不可能是环境的问题了。

那么你可能会问,既然虚拟机都解决了环境配置繁琐的问题,那为啥 Docker 还过来凑热闹呢?

这就涉及到虚拟机的不足了,虚拟机占用资源问题。

  • 虚拟机是一个完整的操作系统,会占用磁盘的资源,一个系统需要多少磁盘那么就会占用多少磁盘资源。也就意味着假如有 10 台虚拟机,那么就占用了 10 个操作系统的磁盘空间。
  • 哪怕虚拟机真实使用的内存 1MB,虚拟机仍然需要几百 MB 的内存。同理,几个虚拟机则造成了几个操作系统内存的资源浪费。
  • 启动慢,启动时间基本和操作系统启动时间一致。

说到这里,你肯定明白了,Docker就可以解决上述的不足。

Docker 是怎么解决虚拟机带来的不足呢?

其实也不能说是 Docker 解决的,应该说 Linux 发展了另一种虚拟化技术:Linux容器。有兴趣的小伙伴可以去查查资料看看 Linux容器技术发展简史

Linux 容器不虚拟化出整个操作系统,简单来说就是共享操作系统内核 + 必要运行环境,而主角 Docker 只是 Linux容器 思想的实践产品之一。

  • 容器虚拟化的不是一个完整的操作系统,所以当然磁盘资源占用少很多。
  • 容器复用了 Linux 内核,作为一个进程运行,所以占用的内存自然也少很多。
  • 容器作为系统中的一个进程,所以启动速度当然快很多,基本上是秒级。

对比 虚拟机 和 容器

特性 虚拟机 容器
硬盘使用 一般为GB 一般为MB
启动 秒级 分钟级
系统支持量 单机支持上千个容器 一般几十个

二、Docker是什么

1. Docker简介

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC)等技术。

2. Docker的三大基础概念

Docker镜像(Image)

Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。

例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或 用户需要的其它应用程序。

Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接 从其他人那里下载一个已经做好的镜像来直接使用。

Docker容器(Container)

Docker 利用容器来运行应用。 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做是一个简易版的 Linux 环境(包括root 用户权限、进程空间、用户空 间和网络空间等)和运行在其中的应用程序。

Docker仓库(Registrty)

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为 一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是 DockerHub,存放了数量庞大的镜像供用户下载。 当然,用户也可以在本地网络内创建一个私有仓库。

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这 样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

3. 镜像、容器、仓库关系

4. 镜像、容器、仓库的运行关系

都读到这里了,来个 点赞、评论、关注、收藏 吧!

文章作者:IT王小二

首发地址:https://www.itwxe.com/posts/53aa5457/

版权声明:文章内容遵循 署名-非商业性使用-禁止演绎 4.0 国际 进行许可,除特殊声明外皆为原创,转载请在文章页面明显位置给出作者与原文链接。

揭开Docker的面纱的更多相关文章

  1. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  2. 【工作感悟】——揭开“PM”的面纱

    [前言] 上次跟大家分享了面试的故事,小编觉得效果还不错,因此小编决定把工作感悟系列写下去,不过时间就不好说了.希望小伙伴们在评论列表中发表自己的看法和观点,积极参与啦~~ [背景] 初来Y公司,作为 ...

  3. 10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱!

    原文链接:10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱! 你以为 Redis 这么快仅仅因为单线程和基于内存? 那么你想得太少了,我个 ...

  4. 揭开Docker的神秘面纱

    Docker 相信在飞速发展的今天已经越来越火,它已成为如今各大企业都争相使用的技术.那么Docker 是什么呢?为什么这么多人开始使用Docker? 本节课我们将一起解开Docker的神秘面纱. 本 ...

  5. springmvc+hibernate入门-揭开神秘的面纱

            Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这 ...

  6. 揭开redis神秘面纱

    一直听别人说NoSQL,以前一直不明白,这到底是什么东西,今天听过我们涛哥的讲解,略有小感,特此小记. NoSQL(NoSQL = Not Only SQL),意为反SQL运动,是一项全新的数据库革命 ...

  7. 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理

    https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...

  8. 揭开jQuery的面纱-jQuery选择器简介(二)

    选择器并没有一个固定的定义,在某种程度上说,jQuery的选择器和样式表中的选择器十分相似.选择器具有如下特点: 1.简化代码的编写 2.隐式迭代 3.无须判断对象是否存在 “$”是选择器不可缺少的部 ...

  9. 揭开jQuery的面纱

    简单地说,jQuery是一个优秀的JavaScript类库,也就是使用JavaScript面向对象的性质编写的一个JavaScript类的集合.jQuery究竟能为我们提供哪些功能呢?简单地说可以从七 ...

随机推荐

  1. sed 's/AA/BB/' file # 将文件中的AA替换成BB,只替换一行中第一次出现的AA,替换后的结果输出到屏幕 sed 's/AA/BB/g' file # 将文件中的所有AA都替换成BB,替换后的结果输出到屏幕

    生信人的自我修养:Linux命令速查手册 简佐义 ​ 四川大学 生物信息学硕士 科学求真 赢 10 万奖金 · 院士面对面 209 人赞同了该文章 许多人做生物信息学,要么不重视Linux,要么不知道 ...

  2. .jnlp 文件打开方式

    .jnlp 文件打开方式 jnlp文件打开需要安装jre ,java环境,通过java环境运行即可,下面介绍详细步骤 1.下载.安装最新版jre环境,直接下一步即可 2 java配置 打开控制面板,查 ...

  3. Docker——JVM 感知容器的 CPU 和 Memory 资源限制

    前言 对于那些在Java应用程序中使用Docker的CPU和内存限制的人来说,可能会遇到一些挑战.特别是CPU限制,因为JVM在内部透明地设置GC线程和JIT编译器线程的数量. 这些可以通过命令行选项 ...

  4. WPS2019党政机关单位版(无广告困扰)

    WPS2019党政机关单位版(无广告困扰) 科技趣闻 ​ 中国石油大学(华东) 控制科学与工程硕士 17 人赞同了该文章 导读 WPS Office 2019专业版机关版是由WPS官方专为企业.机关单 ...

  5. Docker的介绍和安装(1)

    一.虚拟化简介 1.虚拟化概念 计算机虚拟化(Computing Virtualization),一种资源管理技术,是指通过虚拟化技术将一台计算机的各种实体资源 , 如处理器 , 网络 , 内存及存储 ...

  6. 3 当某个应用的CPU使用达到100%,该怎么办?

    你最常用什么指标来描述系统的 CPU 性能呢?我想你的答案,可能不是平均负载,也不是 CPU 上下文切换,而是另一个更直观的指标-- CPU 使用率.CPU 使用率是单位时间内 CPU 使用情况的统计 ...

  7. wxPython开发之密码管理程序

    不想记密码?密码全设置成一样担心安全?用别人程序担心密码泄露?看完本博客,开发一个属于自己的密码管理程序吧 我们用到的是python的wxPython界面库包 先来看下成果界面:简洁主题明确  要想开 ...

  8. Java核心技术卷阅读随笔--第2章【Java 程序设计环境】

    Java 程序设计环境 本章主要介绍如何安装 Java 开发工具包( JDK ) 以及如何编译和运行不同类型的程序: 控制台程序. 图形化应用程序以及 applet.运行 JDK 工具的方法是在终端窗 ...

  9. JS 反射机制及 Reflect 详解

    一.什么是反射机制 反射机制是在编译阶段不知道是哪个类被加载,而是在运行的时候才加载.执行. 也就是说,反射机制指的是程序在运行时能够获取自身的信息. js 中的 apply 就是反射机制. 二.Re ...

  10. MySQL是如何实现事物隔离?

    前言 众所周知,MySQL的在RR隔离级别下查询数据,是可以保证数据不受其它事物影响,而在RC隔离级别下只要其它事物commit后,数据都会读到commit之后的数据,那么事物隔离的原理是什么?是通过 ...