什么是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 运行过程也就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器
No man ever steps in the same river twice.
The meaning of the river flowing is not that all things are changing, so that we cannot encounter them twice, but that some things stay the same only by changing~
皆 誰かに必要とされたくて、でも うまくいかなくて 泣きたい気持ちを笑い飛ばして
浙公网安备 33010602011771号