Q: Dokcer是什么?

A: 是一种虚拟化技术。参考https://www.imooc.com/learn/867快速了解Docker。

Q: 传统虚拟机技术和Dokcer的区别?

A: 传统虚拟机技术是虚拟出一套硬件后,在其运行一个完整的操作系统,再在该系统上运行所需要的应用进程;而dokcer容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,也没有进行硬件虚拟,所以docker技术比传统的虚拟机技术更轻便。详细可参考:虚拟机技术和Dockers的区别

  

Q:哪里使用了 Dokcer

A:docker的用途通常隔离不同的应用,例如前端 后端 数据库,以及一些独立的功能模块。在微服务领域这块,应用非常广。看看他人的说法 http://dockone.io/question/89

Q: Docker的优势?

A: Build Once,Run Anywhere. 参考 https://blog.csdn.net/xiangxizhishi/article/details/79441391

基本概念

Docker 是Google公司已Go语言开发 的,基于Linux内核的cgroup ,namesapce,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面上的虚拟化技术。

Docker三个基本概念,了解这三个基本概念,就了解了docker的生命周期

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像(image)

  镜像提供容器运行时所需要的程序,资源、配置文件等,是一个特殊的文件系统。是容器运行的基础。

  镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变,后一层的改变只会在自己这一层发生改变。删除前一层的文件操作,实际上不会删除前一层的文件,而是仅仅在该层将文件标记为删除,实际上还存储在前一层。因此在镜像的构建过程中,只尽量的添加该层需要的文件,任何和该层无关的文件要清理。

如下图:我们拉取一个tomcat的镜像,一个红框说明一层。

容器(container)
  容器的实质就是进程,与直接在宿主机运行的进程不同,容器进程运行在一个属于自己独立的命名空间中,有自己独立的root文件系统,网络配置,自己的进程空间。镜像和容器的关系就像是 类和对象实例的关系,镜像是静态的定义,容器是运行时的实体,可以被创建、暂停、删除,启动、停止等。
  镜像是分层存储的,容器也是分层存储,容器以镜像为基础层,创建一个当前容器存储层,称为容器存储层,为容器运行时读写而准备。容器存储层的生命周期和容器是一致的,容器消亡时,容器存储层的数据也会消失。按照Docker的最佳实践,容器存储层需要保持无状态化,不应该向容器层写入数据。容器的写入操作应该使用数据卷(volume)或者绑定宿主目录,跳过容器存储层直接对宿主机或者网络存储进行读写,性能和稳定性更好。
 
仓库(repository)
  镜像构建完成之后,可以在宿主机运行,但是需要在其他服务器上运行这个镜像,需要一个集中存储、发布镜像的一个服务,Docker Registry就是这样的服务。Docker Registry可以包含多个仓库,每个仓库包括多个标签,每个标签表示一个镜像。
 
Repository 和 Registry 不要混淆:Repository 是仓库,集中存放镜像的地方,Registry是注册服务器,就是管理仓库的具体服务器,每个服务器上可以有多个仓库,每个仓库下面有多个镜像。例如仓库地址dl.dockerpool.com/ubuntu ,dl.dockerpool.com是服务注册地址,ubuntu是仓库名。

如下图:repository 名称是tomcat,标签(tag)是latest 表示最新版本。

参考:

https://www.imooc.com/learn/867

http://dockone.io/article/2387

http://dockone.io/question/89

https://blog.csdn.net/xiangxizhishi/article/details/79441391

《Dockers 入门到实战》

<Docker学习>1. 简介的更多相关文章

  1. 1.docker学习之简介

    什么是Docker Docker是一个开源的应用容器引擎.通俗来说:所谓开源,就是指Docker是开放源代码的,比如用户可以免费使用该源代码, 并在该源代码的基础上自由修改或传播.所谓引擎,指的是程序 ...

  2. docker学习笔记-简介

    零.什么是Docker 是一个基于GO语言开发的开源 应用容器: 开发者可以打包应用和相关包,到一个 轻量级 . 可移植 的 容器 中,并且可以发布到 任何机器 ,实现 虚拟化: 完全使用 沙箱机制, ...

  3. Docker学习记录--入门了解+安装

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  4. Docker学习(一): 基本概念

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  5. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  6. Docker学习-从无知到有知的学习过程

    Docker学习 最近被别人提到的docker吸引到了注意力,所以打算先快速的了解一下docker到底是个上面东西. 之所以我写下这个文档呢,是为了记录对docker一无所知我是如何进行学习一门新技术 ...

  7. Docker学习—Machine

    前言 前面<Docker学习-Compose>文中介绍了Compose的使用方式:接下来继续了解docker三剑客之一的 Machine: 一.Docker Machine简介 1.什么是 ...

  8. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  9. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

随机推荐

  1. Linux Shell命令系列(5) VI编辑器

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  2. Flask之目录结构

    学习Flask,整合其目录结构也是比较重要的.一个最基础的Flask目录如下所示: 一.SQLAlchemy-utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchem ...

  3. Django组件:forms组件(简易版)

    一.校验字段功能 1.模型:models.py class UserInfo(models.Model): name=models.CharField(max_length=32) pwd=model ...

  4. C# 只运行一个实例 ShowWindowAsync 窗体隐藏时失效 解决方案

    如果窗体已经隐藏,那么利用instance.MainWindowHandle得到的句柄为空,继而ShowWindowAsync 操作失败 不过我们可以使用FindWindow来查找到指定窗体的句柄 只 ...

  5. nvcc 编译显示寄存器使用情况

    NVCC Compiler 里面增加 Command line pattern中${COMMAND}后 增加选项: --ptxas-options=-v

  6. ArcGIS API for JavaScript开发初探——基础知识

    1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...

  7. slfj4 + logback

    slf4j:(Simple Logging Facade for Java,简单日志门面),它不是具体的日志解决方案,只服务于各种各样的日志系统.在使用SLF4J的时候,不需要再代码中或配置文件中指定 ...

  8. genlist -s 192.168.21.\*

    显示网段192.168.21中可用的主机.

  9. 微信iOS端无法执行jquery on()方法

    微信iOS端无法执行jquery on()方法,click方法可以, 如下代码是不会执行的: $(function(){ $('body').on('click','.cka',function(){ ...

  10. linux性能测试脚本

    http://linux-bench.com/ What is Linux-Bench? Linux-Bench is a simple script that provides a basic le ...