Docker学习日记(第二章Docker基础)
镜像(Image)
- Linux 我们都知道,操作系统分为
内核 和 用户空间
- 对于 Linux 而言,内核启动后,会挂载
root 文件系统为其提供用户空间支持
- 而 Docker 镜像(lmage) 就相当于是一个 root 文件系统。比如官方镜像
centos7.6 就包含了完整的一套 centos7.6 最小系统的 root 文件系统
- Docker 镜像是一个特殊的文件系统
- 除了提供容器运行时所需的程序、库、资源、配置等文件外
- 还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变
- 镜像就是文件,是只读的,它提供了运行程序完整的软硬件资源,是应用程序的集装箱
容器(Container)
- 镜像(Image) 和容器(Container) 的关系,就像 Java 中的类和实例一样,镜像是静态的定义
- 容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
- 容器之间彼此隔离
仓库(Repository)
- 镜像构建完成后,可以很容易的在当前宿主机上运行
- 但是,如果需要在其它服务器上使用这个镜像
- 我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务
- 一个 Docker Registry 中可以包含多个仓库(Repository)
- 每个仓库可以包含多个标签(Tag)
- 每个标签对应一个镜像
- 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本
三者之间的关联
- 仓库与镜像:仓库是镜像的存储地。用户可以通过Docker CLI命令或图形界面与仓库交互,下载(pull)或上传(push)镜像。
- 镜像与容器:镜像是容器的模板。用户可以从一个镜像启动(run)多个独立的容器实例。这些容器实例共享相同的镜像,但具有各自独立的运行状态和资源。
- 工作流程:这三者共同构成了Docker的核心工作流程。用户从仓库中拉取镜像到本地,基于镜像创建容器实例,并在容器中运行应用程序。如果需要,用户还可以将修改后的容器重新打包为镜像,并推送到仓库中以便共享。