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 服务端进行通信。

相关推荐
国医中兴2 小时前
电子病历的时序数据分析:ClickHouse在临床指标监控中的落地
微服务·云原生·容器·kubernetes·k8s
浮生望2 小时前
Docker 入门实战:容器化思想、nginx 反向代理与容器生命周期管理
docker
2601_966799043 小时前
酷嗨米J300:一台相机同步推三平台
运维·服务器·负载均衡
Bamtone20254 小时前
Bamtone班通:TDR阻抗测试仪如何高效助力AI服务器高速信号完整性验证?
服务器·人工智能·阻抗测试·阻抗分析
Brilliantwxx4 小时前
【Linux】 进程(7)深度剖析 进程内核O(1)调度队列 + 饥饿问题
linux·运维·服务器
疯狂打码的少年4 小时前
【数据库技术】关系完整性约束(实体/参照/用户定义)
运维·服务器·数据库·笔记
刚入门的大一新生5 小时前
Linux-命令行参数和环境变量
linux·运维·服务器
FreeTinker5 小时前
Java文件服务器的技术选型与实现路径:从嵌入式工具到企业级系统
java·服务器·开发语言
我星期八休息6 小时前
Linux I/O多路转接—epoll
java·linux·运维·服务器·开发语言·jvm·算法
土星云SaturnCloud6 小时前
超轻量 OCR 实战:PP-OCR 边缘部署实践
服务器·人工智能·ai·ocr·边缘计算