docker基础认知(镜像+容器+仓库+客户端与服务器)

镜像(Image)

静态文件,提供了容器运行时所需的程序、库、资源、配置等文件,另外包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。(相比文件的说法,文件系统的说法更加合理,因为镜像就像一个文件系统,包含了许多静态的目录和文件)

镜像包含操作系统完整的 root 文件系统,体积较大,所以其被设计为分层存储的架构。不同于操作系统那样的一个超大的ISO打包文件,一个镜像是由多层文件系统联合组成;在镜像构建时,会一层层构建,前一层是后一层的基础,每一层构建完就不会再发生改变。

分层存储的特征使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

容器(Container)

进程,镜像是静态的定义,容器是镜像运行时的实体,可以被创建、启动、停止、删除、暂停等。

由于是虚拟化技术,对于容器进程来说,它会运行于属于自己的独立的命名空间,可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。

容器也运用了分层存储技术,每一个容器运行时,都是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。容器运行时,只会修改当前层,不会影响上层的镜像层;容器消亡时,容器存储层也随之消亡,任何保存于容器存储层的信息都会随容器删除而丢失。

(最佳实践:容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者 绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。)

仓库(Repository)

docker Registry是一个集中的存储、分发镜像的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 : 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Registry 公开服务

开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如网易云镜像服务DaoCloud 镜像市场阿里云镜像库等。

Docker客户端与Docker daemon

Docker 使用 C/S 结构,即客户端/服务器体系结构。 Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。 Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 stock 或网络接口与远程 Docker 服务端进行通信。

相关推荐
VekiSon3 分钟前
Linux系统编程——进程进阶:exec 族、system 与工作路径操作
linux·运维·服务器
morliz子轩8 分钟前
在Docker上安装MYSQL 8.x—RelationalDb with SQL
sql·mysql·docker
huahailing102410 分钟前
docker 部署 rustfs
运维·docker·容器
YJlio14 分钟前
[鸿蒙2025领航者闯关] 鸿蒙 6 实战:给“支付/账单页”加上 AI 防窥 + 超级隐私模式兜底 + 方舟引擎性能优化
服务器·笔记·学习
wanhengidc14 分钟前
云手机 实体手机的云端延伸
运维·服务器·科技·智能手机·云计算
翼龙云_cloud19 分钟前
阿里云渠道商:如何三步提升阿里云轻量服务器单机性能?
运维·服务器·阿里云·云计算
失眠的树亚26 分钟前
vscode连接阿里云ECS服务器
服务器·vscode·阿里云
gaize121330 分钟前
关于服务器的入门知识
服务器
库库林_沙琪马32 分钟前
3、Sentinel
服务器·网络·sentinel
默|笙1 小时前
【Linux】进程(4)进程优先级、切换和调度
linux·运维·服务器