码头工人清单
描述
管理Docker映像清单和清单清单
该命令在Docker客户端上是实验性的。
它不应在生产环境中使用。
要在Docker CLI中启用实验性功能,请编辑 config.json 并将其设置
experimental
为enabled
。您可以在此处 获取更多信息。
用法
$ docker manifest COMMAND COMMAND
扩展说明
该docker manifest
命令本身不执行任何操作。为了对清单或清单列表进行操作,必须使用子命令之一。
单个清单是有关图像的信息,例如层,大小和摘要。docker manifest命令还为用户提供其他信息,例如,操作系统和构建映像的体系结构。
清单清单是通过指定一个或多个(最好是一个以上)图像名称而创建的图像层的列表。然后,可以像在docker pull
和docker run
命令中使用图像名称一样使用它。
理想情况下,清单清单是根据功能不同的os / arch组合的图像创建的。因此,清单清单通常被称为“多体系结构图像”。但是,用户可以创建一个清单列表,该清单指向两个图像-一个用于amd64上的Windows,一个用于amd64上的darwin。
清单检查
manifest inspect --help
Usage: docker manifest inspect [OPTIONS] [MANIFEST_LIST] MANIFEST
Display an image manifest, or manifest list
Options:
--help Print usage
--insecure Allow communication with an insecure registry
-v, --verbose Output additional info including layers and platform
清单创建
Usage: docker manifest create MANIFEST_LIST MANIFEST [MANIFEST...]
Create a local manifest list for annotating and pushing to a registry
Options:
-a, --amend Amend an existing manifest list
--insecure Allow communication with an insecure registry
--help Print usage
清单注解
Usage: docker manifest annotate [OPTIONS] MANIFEST_LIST MANIFEST
Add additional information to a local image manifest
Options:
--arch string Set architecture
--help Print usage
--os string Set operating system
--os-version string Set operating system version
--os-features stringSlice Set operating system feature
--variant string Set architecture variant
明显的推动
Usage: docker manifest push [OPTIONS] MANIFEST_LIST
Push a manifest list to a repository
Options:
--help Print usage
--insecure Allow push to an insecure registry
-p, --purge Remove the local manifest list after push
使用不安全的注册表
manifest命令仅与Docker注册表交互。因此,它无法查询引擎以获取允许的不安全注册表列表。为了允许CLI与不安全的注册表进行交互,某些docker manifest
命令带有一个--insecure
标志。对于每个create
查询注册表的事务(例如),--insecure
必须指定标志。此标志告诉CLI,此注册表调用可能会忽略安全性问题,例如丢失或自签名证书。同样,在manifest push
不安全的注册表上,--insecure
必须指定该标志。如果不与不安全的注册表一起使用,清单命令将找不到符合默认要求的注册表。
有关此命令的示例用法,请参阅下面的示例部分。
例子
检查图像的清单对象
$ docker manifest inspect hello-world
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1520,
"digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 972,
"digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"
}
]
}
检查图像的清单并获取操作系统/架构信息
该docker manifest inspect
命令带有一个可选--verbose
标志,该标志为您提供图像的名称(Ref),体系结构和os(平台)。
就像其他使用映像名称的docker命令一样,您可以引用带有或不带有标签的映像,也可以引用摘要(例如hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
)。
这是一个使用--verbose
标志检查图像清单的示例:
$ docker manifest inspect --verbose hello-world
{
"Ref": "docker.io/library/hello-world:latest",
"Digest": "sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f",
"SchemaV2Manifest": {
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1520,
"digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 972,
"digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"
}
]
},
"Platform": {
"architecture": "amd64",
"os": "linux"
}
}
创建并推送清单
要创建清单清单,您首先要create
在本地通过指定要包含在清单清单中的组成图像来创建清单清单。请记住,这已推送到注册表,因此,如果要推送到docker注册表以外的其他注册表,则需要使用注册表名称或IP和端口创建清单列表。这类似于标记图像并将其推送到外部注册表。
创建清单清单的本地副本之后,可以选择
annotate
它。允许的注释包括体系结构和操作系统(覆盖图像的当前值),操作系统功能以及体系结构变体。
最后,您需要将push
清单清单添加到所需的注册表。下面是对这三个命令的描述,以及将它们全部组合在一起的示例。
$ docker manifest create 45.55.81.106:5000/coolapp:v1 \
45.55.81.106:5000/coolapp-ppc64le-linux:v1 \
45.55.81.106:5000/coolapp-arm-linux:v1 \
45.55.81.106:5000/coolapp-amd64-linux:v1 \
45.55.81.106:5000/coolapp-amd64-windows:v1
Created manifest list 45.55.81.106:5000/coolapp:v1
$ docker manifest annotate 45.55.81.106:5000/coolapp:v1 45.55.81.106:5000/coolapp-arm-linux --arch arm
$ docker manifest push 45.55.81.106:5000/coolapp:v1
Pushed manifest 45.55.81.106:5000/coolapp@sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426 with digest: sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b
Pushed manifest 45.55.81.106:5000/coolapp@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f with digest: sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a
Pushed manifest 45.55.81.106:5000/coolapp@sha256:39dc41c658cf25f33681a41310372f02728925a54aac3598310bfb1770615fc9 with digest: sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8
Pushed manifest 45.55.81.106:5000/coolapp@sha256:f91b1145cd4ac800b28122313ae9e88ac340bb3f1e3a4cd3e59a3648650f3275 with digest: sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62
sha256:050b213d49d7673ba35014f21454c573dcbec75254a08f4a7c34f66a47c06aba
检查清单
$ docker manifest inspect coolapp:v1
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 424,
"digest": "sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b",
"platform": {
"architecture": "arm",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 424,
"digest": "sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 425,
"digest": "sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8",
"platform": {
"architecture": "ppc64le",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 425,
"digest": "sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62",
"platform": {
"architecture": "s390x",
"os": "linux"
}
}
]
}
推送到不安全的注册表
这是使用已知的不安全注册表创建和推送清单列表的示例。
$ docker manifest create --insecure myprivateregistry.mycompany.com/repo/image:1.0 \
myprivateregistry.mycompany.com/repo/image-linux-ppc64le:1.0 \
myprivateregistry.mycompany.com/repo/image-linux-s390x:1.0 \
myprivateregistry.mycompany.com/repo/image-linux-arm:1.0 \
myprivateregistry.mycompany.com/repo/image-linux-armhf:1.0 \
myprivateregistry.mycompany.com/repo/image-windows-amd64:1.0 \
myprivateregistry.mycompany.com/repo/image-linux-amd64:1.0
$ docker manifest push --insecure myprivateregistry.mycompany.com/repo/image:tag
笔记
--insecure
注释清单清单不需要该标志,因为注释是清单清单的本地存储副本。--insecure
如果要docker manifest inspect
在本地存储的清单列表中执行,也可以跳过该标志。请务必记住,引擎不会在上使用本地存储的清单列表docker pull
。
上级命令
命令 | 描述 |
---|---|
码头工人 | Docker CLI的基本命令。 |
子命令
命令 | 描述 |
码头工人清单注释 | 将其他信息添加到本地图像清单 |
码头工人清单创建 | 创建本地清单列表以注释并推送到注册表 |
码头工人清单检查 | 显示图像清单或清单 |
码头工人清单推送 | 将清单清单推送到存储库 |
码头工人清单rm | 从本地存储删除一个或多个清单列表 |