<Docker学习>1. 简介

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 入门到实战》

原文地址:https://www.cnblogs.com/xiaojianfeng/p/9372271.html