名称

podman-commit - 基于更改后的容器创建新镜像

语法

podman commit [选项] 容器 [镜像]

podman container commit [选项] 容器 [镜像]

描述

podman commit 基于已更改的 容器 创建镜像。可以使用 --author 选项设置镜像作者。可以使用 --change 选项配置各种镜像指令,并可以使用 --message 选项设置提交消息。在提交镜像时, 容器 及其进程不会暂停。如果不需要这样做,可以将 --pause 选项设置为 true。提交完成后,Podman 会打印出新镜像的 ID。

如果 image 不以注册表名称组件开头,则会在名称前添加 localhost。如果未提供 image,则创建镜像的 REPOSITORYTAG 值将设置为 <none>

选项

--author, -a=author

设置提交镜像的作者。

--change, -c=instruction

将以下可能的指令应用于创建的镜像

  • CMD

  • ENTRYPOINT

  • ENV

  • EXPOSE

  • LABEL

  • ONBUILD

  • STOPSIGNAL

  • USER

  • VOLUME

  • WORKDIR

可以多次设置。

--config=ConfigBlobFile

将来自指定文件的容器配置合并到正在提交的镜像的配置中。文件内容应该是 Schema2Config 结构的 JSON 编码版本,该结构定义在 https://github.com/containers/image/blob/v5.29.0/manifest/docker_schema2.go#L67。

--format, -f=oci | docker

设置镜像清单和元数据的格式。当前支持的格式是 ocidocker
默认值为 oci

--iidfile=ImageIDfile

将镜像 ID 写入文件。

--include-volumes

podman createpodman run 命令的 --volume--mount 选项添加到容器的任何卷都包含在提交的镜像中。
默认值为 false

--message, -m=message

设置提交镜像的提交消息。
重要提示:oci 格式不支持 message 字段。

--pause, -p

在创建镜像时暂停容器。
默认值为 false

--quiet, -q

抑制输出。
默认值为 false

--squash, -s

将新构建的层压缩到单个新层中。
默认值为 false

示例

从具有入口点和标签的容器创建镜像

$ podman commit --change CMD=/bin/bash --change ENTRYPOINT=/bin/sh --change "LABEL blue=image" reverent_golick image-committed
Getting image source signatures
Copying blob sha256:b41deda5a2feb1f03a5c1bb38c598cbc12c9ccd675f438edc6acd815f7585b86
 25.80 MB / 25.80 MB [======================================================] 0s
Copying config sha256:c16a6d30f3782288ec4e7521c754acc29d37155629cb39149756f486dae2d4cd
 448 B / 448 B [============================================================] 0s
Writing manifest to image destination
Storing signatures
e3ce4d93051ceea088d1c242624d659be32cf1667ef62f1d16d6b60193e2c7a8

从具有提交消息的容器创建镜像

$ podman commit -q --message "committing container to image"
reverent_golick image-committed
e3ce4d93051ceea088d1c242624d659be32cf1667ef62f1d16d6b60193e2c7a8

从具有作者的容器创建镜像

$ podman commit -q --author "firstName lastName" reverent_golick image-committed
e3ce4d93051ceea088d1c242624d659be32cf1667ef62f1d16d6b60193e2c7a8

在创建镜像时暂停正在运行的容器

$ podman commit -q --pause=true containerID image-committed
e3ce4d93051ceea088d1c242624d659be32cf1667ef62f1d16d6b60193e2c7a8

从具有默认镜像标签的容器创建镜像

$ podman commit containerID
e3ce4d93051ceea088d1c242624d659be32cf1667ef62f1d16d6b60193e2c7a8

从具有默认所需功能的容器创建镜像

$ podman commit -q --change LABEL=io.containers.capabilities=setuid,setgid epic_nobel privimage
400d31a3f36dca751435e80a0e16da4859beb51ff84670ce6bdc5edb30b94066

另请参见

podman(1), podman-run(1), podman-create(1)

故障排除

有关常见问题的解决方案,请参阅 podman-troubleshooting(7)

历史

2017 年 12 月,最初由 Urvashi Mohnani 编写 umohnani@redhat.com