什么是Docker

Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。最重要的是,它不依赖于任何语言、框架或系统。

Docker 作用

1.软件容器平台
2.对进程进行封装隔离,属于操作系统层面的虚拟化技术
3.能够自动执行重复性任务
4.创建和使用方便, 可以进行版本管理、复制、分享、修改

▶镜像(Image),容器(Container),仓库(Repository)

 
★集装箱 ★标准化①运输方式 ② 存储方式 ③ API接口 ★隔离

 

(一) 容器→ 将软件打包成标准化单元,以用于开发、交付和部署。

 
镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
→🚩分层存储→ 容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡
🥝容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间
▶容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录
数据卷的生存周期独立于容器,因此, 使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失。
+容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
+容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
+容器赋予了软件独立性 ,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
 
♠容器VS 虚拟机→ 容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。因此容器的隔离级别会稍低一些。
 

(二) 镜像

→一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
→不包含动态数据, 内容在构建后不会被改变→
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层
+分层存储架构 →多层文件系统联合组成
+镜像可复用, 可定制
操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而Docker 镜像(Image),就相当于是一个 root 文件系统。
 

(三)仓库Repository

→集中存放镜像文件的地方
+一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。

▶Docker Registry服务→ 集中的存储、分发镜像的服务
+一个 Docker Registry中可以包含多个仓库(Repository)
 
 
Build(构建镜像) : 镜像就像是集装箱包括文件以及运行环境等等资源。
Ship(运输镜像) :主机和仓库间运输,这里的仓库就像是超级码头一样。
Run (运行镜像) :运行的镜像就是一个容器,容器就是运行程序的地方。
Docker 运行过程也就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器
 
posted on 2019-05-04 21:03  Sabrina_Yu  阅读(78)  评论(0)    收藏  举报