千家信息网

Docker Image怎么使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Docker Image怎么使用",在日常操作中,相信很多人在Docker Image怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Docke
千家信息网最后更新 2026年11月03日Docker Image怎么使用

这篇文章主要介绍"Docker Image怎么使用",在日常操作中,相信很多人在Docker Image怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Docker Image怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Layer

镜像是由layers构成的。Image Layer是一个通用的概念,可以指代下面:

  1. 以JSON形式描述的元数据

  2. 以layer描述的文件系统的改变

Image JSON

每一个layer都有一个JSON数据结构来描述这个Image的基本信息,例如镜像创建日期、作者、父镜像ID等。

Image Filesystem Changeset

每一个layer都会有对它相对于父layer增、删、改的文件的一个存档,使用诸如AUFS等联合挂载文件系统,可以将一系列的image layer以单一的文件系统的形式呈现出来。

Image Parent

大多数layer的元数据结构包含一个parent字段用来指定它的父镜像。一个Image包含一个单独的JSON元数据文件以及一系列的相对于父镜像的文件系统的改变。

Image JSON Description

{      "id": "a9561eb1b190625c9adb5a9513e72c4dedafc1cb2d4c5236c9a6957ec7dfd5a9",    "parent": "c6e3cedcda2e3982a1a6760e178355e8e65f7b80e4e5248743fa3549d284e024",    "checksum": "tarsum.v1+sha256:e58fcf7418d2390dec8e8fb69d88c06ec07039d651fedc3aa72af9972e7d046b",    "created": "2014-10-13T21:19:18.674353812Z",    "author": "Alyssa P. Hacker <alyspdev@example.com>",    "architecture": "amd64",    "os": "linux",    "Size": 271828,    "config": {        "User": "alice",        "Memory": 2048,        "MemorySwap": 4096,        "CpuShares": 8,        "ExposedPorts": {              "8080/tcp": {}        },        "Env": [              "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",            "FOO=docker_is_a_really",            "BAR=great_tool_you_know"        ],        "Entrypoint": [            "/bin/my-app-binary"        ],        "Cmd": [            "--foreground",            "--config",            "/etc/my-app.d/default.cfg"        ],        "Volumes": {            "/var/job-result-data": {},            "/var/log/my-app-logs": {},        },        "WorkingDir": "/home/alice",    }}

architecture string

该镜像的二进制文件所运行的主机的架构。

os string

该镜像所运行在的操作系统的类型。

ExposedPorts struct

运行该镜像的容器所暴露出来的端口集合。

例如:

{    "8080": {},    "53/udp": {},    "2356/tcp": {}}

健可以为以下类型:

"port/tcp""port/udp""port"

其中。默认的协议是tcp协议。

Entrypoint array of strings

容器开始运行的时候,所要执行的一系列命令的集合。

创建Image Filesystem Changeset

首先创建一个以Image ID命名的空目录,作为该镜像的根文件系统。以镜像c3167915dc9d为例:

c3167915dc9d/

接着创建相应的目录及文件:

c3167915dc9d/    etc/        my-app-config    bin/        my-app-binary        my-app-tools

c3167915dc9d目录会被作为以下文件的打包存档的入口。

etc/my-app-configbin/my-app-binarybin/my-app-tools

一旦在镜像的文件系统上做出改变(增、删、改),会创建一个新的目录,以一个新的ID对这个目录命名,比如f60c56784b83,并且使用父镜像的根文件系统进行快照对其初始化。这样,该目录和原来的目录c3167915dc9d具有完全相同的内容。如下所示:

f60c56784b83/    etc/        my-app-config    bin/        my-app-binary        my-app-tools

接下来的修改是要增加一个配置目录/etc/my-app.d,该目录包含一个默认的配置文件。同样,对目录my-app-tools也会做出改变以处理配置布局的改变。然后,目录f60c56784b83如下所示:

f60c56784b83/    etc/        my-app.d/            default.cfg    bin/        my-app-binary        my-app-tools

上面反映了/etc/my-app-config的删除以及/etc/my-app.d/default.cfg的创建。/bin/my-app-tools也会被新修改的所代替。在将该目录提交给changeset之前,由于它有父镜像,首先会将它与父镜像的目录树f60c56784b83进行比较,找出所有修改的文件。changeset如下所示:

Added:      /etc/my-app.d/default.cfgModified:   /bin/my-app-toolsDeleted:    /etc/my-app-config

一个只包含该changeset的打包存档被创建。文件名以 .wh.作为前缀 的文件是 "whiteout"文件,需要注意的是:不允许创建包含 "whiteout"文件的镜像根文件系统。对f60c56784b83的打包存档如下所示:

/etc/my-app.d/default.cfg/bin/my-app-tools/etc/.wh.my-app-config

Combined Image JSON + Filesystem Changeset Format

包含Image完整信息的结构如下所示:

  • repository names/tags

  • all image layer JSON files

  • all tar archives of each layer filesystem changesets

以library/busybox为例:

.├── 5785b62b697b99a5af6cd5d0aabc804d5748abbb6d3d07da5d1d3795f2dcc83e│   ├── VERSION│   ├── json│   └── layer.tar├── a7b8b41220991bfc754d7ad445ad27b7f272ab8b4a2c175b9512b97471d02a8a│   ├── VERSION│   ├── json│   └── layer.tar├── a936027c5ca8bf8f517923169a233e391cbb38469a75de8383b5228dc2d26ceb│   ├── VERSION│   ├── json│   └── layer.tar├── f60c56784b832dd990022afc120b8136ab3da9528094752ae13fe63a2d28dc8c│   ├── VERSION│   ├── json│   └── layer.tar└── repositories

对于一个完整Image,其包含一个或多个以Layer ID命名的目录,每一个目录包含三个文件:

  • VERSION - The schema version of the json file

  • json - The JSON metadata for an image layer

  • layer.tar - The Tar archive of the filesystem changeset for an image layer.

repositories是一个JSON文件,用来描述镜像的name和tag。

Loading an Image Filesystem Changeset

1、根据Image的父ID找到根祖先,即没有父ID的的Image。

2、对于每一个image layer,从根目录开始,从上往下,提取出每一个layer的文件系统changeset archive作为后面容器的根文件系统。

提取出每一个存档的内容。

重新遍历目录树,删除所有以 .wh.作为前缀的文件。

到此,关于"Docker Image怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

文件 镜像 目录 系统 存档 数据 学习 运行 容器 结构 配置 接下来 信息 内容 前缀 形式 数据结构 更多 类型 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网科技与金融科技 金融科技与互联网金融 朗涯互联网科技 万达互联网科技 互联网科技视频素材 哈尔滨秒房互联网科技有限公司 广州优美互联网科技 互联网时代科技改变生活 互联网为啥属于高科技 消费医药和互联网科技 呼和浩特新华互联网科技学院 内蒙古九一互联网科技 用友工业互联网科技发展 世界互联网领先科技成果获奖 智帮互联网科技公司最近动向 领航科技大厦互联网公司 山东大美朱楼互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 恒生科技互联网指数十大成分股 南京欣网互联网络科技 安徽鑫晟辉互联网科技 上海致骋互联网科技 丰台科技园 互联网公司 衡水科技产业互联网平台 北京大学互联网科技怎么样 武汉健翔互联网络科技有限公司 民营互联网公司国防科技 雨阳互联网卡科技有限公司 保山互联网科技靠谱吗
0