0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Docker是什么它和虚拟机到底有什么区别

Wildesbeast 来源:今日头条 作者:程序猿研究中心 2019-12-29 11:37 次阅读

Docker 概述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。

扩展:沙盒

沙盒也叫沙箱,英文 sandbox。在计算机领域指一种虚拟技术,且多用于计算机安全技术。安全软件可以先让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。

Docker 是 dotCloud 公司开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go语言并遵从 Apache2.0 协议开源。

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的 container 中,然后发布到任何流行的 Linux 机器上。

官方网站:

https://www.docker.com/

docker官方网站

docker [ˈdɒkə(r)] 码头工人

logo:

logo

注:docker 服务相当于鲸鱼,container 容器就是集装箱。

container :集装箱,容器

docker: 码头工人

源代码下载

https://github.com/docker/docker

扩展:

集装箱是海上运货的一个创新。

源代码下载:

https://github.com/docker/docker

docker 容器技术和虚拟机对比:

相同点:docker 容器技术和虚拟机技术,都是虚拟化技术。

docker 容器技术和虚拟机对比

总结:docker 相对于 VM 虚拟机,少了虚拟机操作系统这一层,所以 docker 效率比虚拟机高

Docker 架构

Docker架构

工作流程:服务器 A 上运行 docker Engine 服务,在 docker Engine 上启动很多容器container,从外网Docker Hub上把image操作系统镜像下载来,放到container容器运行。这样一个容器的实例就运行起来了。最后,通过Docker client对docker容器虚拟化平台进行控制。

Image 和 Container 的关系:image 可以理解为一个系统镜像,Container 是 Image 在运行时的一个状态。如果拿虚拟机作一个比喻的话,Image 就是关机状态下的磁盘文件,Container 就是虚拟机运行时的磁盘文件,包括内存数据。

dockerhub:dockerhub 是docker官方的镜像存储站点,其中提供了许多常用的镜像供用户下载,如 ubuntu, centos 等系统镜像。通过dockerhub用户也可以发布自己的docker镜像,为此用户需要注册一个账号,在网站上创建一个docker仓库。

Docker 核心技术

1.Namespace — 实现Container的进程、网络、消息、文件系统和主机名的隔离。

2.Cgroup — 实现对资源的配额和度量。

注:Cgroup 的配额,可以指定实例使用的cpu个数,内存大小等。就像如下图,vmware 虚拟机中的硬件配置参数

虚拟机配置

Docker特性

文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。

资源隔离:系统资源,像CPU 和内存等可以分配到不同的容器中,使用cgroup。

网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。

日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。

交互式shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互 shell。

优点:

1.一些优势和 VM 一样,但不是所有都一样。

比 VM 小,比VM快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。Docker 启动一个容器实例时间很短,一两秒就可以启动一个实例。

2.对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。

Docker 是一个开放的平台,构建,发布和运行分布式应用程序。

Docker 使应用程序能够快速从组件组装和避免开发和生产环境之间的摩擦。

3.您可以在部署在公司局域网或云或虚拟机上使用它。

4.开发人员并不关心具体哪个 Linux 操作系统

使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。然后,在部署时一切是完全一样的,因为一切都在 DockerImage 的容器在其上运行。开发人员负责并且能够确保所有的相关性得到满足。

5.Google,微软,亚马逊,IBM 等都支持 Docker。

6.Docker 支持 Unix/Linux 操作系统,也支持 Windows 戒 Mac

缺点局限性:

1.Docker 用于应用程序时是最有用的,但并不包含数据。日志,跟踪和数据库等通常应放在 Docker容器外。 一个容器的镜像通常都很小,不适合存大量数据,存储可以通过外部挂载的方式使用。比如使用:NFS,ipsan,NFS 等, -v 映射磁盘分区

一句话:docker 就来用于计算,存储交给别人。

oracle不适合使用 docker 来运行,太大了,存储的数据太多。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11306

    浏览量

    209570
  • 虚拟机
    +关注

    关注

    1

    文章

    917

    浏览量

    28213
  • Docker
    +关注

    关注

    0

    文章

    461

    浏览量

    11859
收藏 人收藏

    评论

    相关推荐

    ARM Cortex-M0与Cortex-M0+到底有什么区别

    ARM Cortex-M0与Cortex-M0+到底有什么区别
    发表于 01-04 23:15

    同时DSP2812的源文件,命名不同,到底有什么区别

    同时DSP2812的源文件,命名不同,到底有什么区别?新建DSP工程时,到底用那种文件呢?讲究吗?
    发表于 04-07 12:57

    LED恒压电源和恒流电源到底有什么区别

    LED恒压电源和恒流电源到底有什么区别
    发表于 12-07 14:53

    乘法器与调制器到底有什么区别

    乘法器与调制器到底有什么区别?调制函数的建模方法是什么?
    发表于 04-09 06:33

    USB 3.0和USB 2.0到底有什么区别呢?

    图文讲解USB 3.0和USB 2.0到底有什么区别呢?
    发表于 05-19 07:12

    KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别

    KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别,又有什么联系?
    发表于 07-01 09:08

    ARM和DSP到底有什么区别

    现在在学ARM,想知道ARM和DSP到底有什么区别?为什么有些地方用DSP有些用ARM
    发表于 10-19 07:20

    什么是 DockerDocker与传统的虚拟机什么区别

    Docker 容器将软件以及运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的运行环境,总是能以相同的方式运行。就好像 Java 虚拟机一样,“一次编写
    的头像 发表于 03-16 14:28 5.2w次阅读
    什么是 <b class='flag-5'>Docker</b>?<b class='flag-5'>Docker</b>与传统的<b class='flag-5'>虚拟机</b><b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    Docker容器与虚拟机区别

    我曾经将Docker容器视为轻量级,精简的虚拟机。 进行这种比较是有道理的,因为至少在Docker的最初市场中,总是将其与虚拟机进行比较-例如,"
    的头像 发表于 05-03 17:17 7676次阅读

    容器、Docker虚拟机区别

    移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。 容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟
    的头像 发表于 11-05 09:41 2987次阅读

    智能照明和传统照明的系统到底有什么区别

    电子发烧友网站提供智能照明和传统照明的系统到底有什么区别资料免费下载
    发表于 11-26 06:41 26次下载

    如何区分虚拟机Docker

    首先,大家需要明确一点,Docker容器不是虚拟机。 2014年,当我第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为
    的头像 发表于 02-14 11:36 1124次阅读
    如何区分<b class='flag-5'>虚拟机</b>与<b class='flag-5'>Docker</b>

    FPC与传统PCB到底有什么区别.zip

    FPC与传统PCB到底有什么区别
    发表于 03-01 15:37 4次下载

    Docker虚拟机区别

    Docker虚拟机是两种不同的虚拟化技术,它们在实现方式、资源消耗、运行性能等方面存在许多差异。本文将会详细介绍它们的区别。 一、实现方式 1.1
    的头像 发表于 11-23 09:37 9797次阅读

    RTOS与Linux到底有什么区别

    很多做嵌入式开发的小伙伴都存在这样的疑惑:RTOS与Linux到底有什么区别
    的头像 发表于 10-29 09:53 456次阅读