名称

podman-generate-spec - 根据容器或 Pod 生成 Specgen JSON

简介

podman generate spec [选项] *容器 | Pod

描述

podman generate spec 从 Podman 容器和 Pod 生成 SpecGen JSON。此 JSON 可以打印到文件、直接打印到命令行,或两者兼而有之。

此 JSON 可用作 Podman API 的输入,特别是用于 Podman 容器和 Pod 的创建。Specgen 是 Podman 的内部结构,用于制定新的容器相关实体。

选项

--compact, -c

以紧凑的单行格式打印输出。当将数据通过管道传输到 Podman API 时,这很有用。

--filename, -f=文件名

输出到给定文件。

--name, -n

重命名 Pod 或容器,使其不与现有实体冲突。当 JSON 在源 Pod 或容器被删除之前使用时,这很有帮助。

示例

根据容器生成 Specgen JSON。

$ podman generate spec container1
{
 "name": "container1-clone",
 "command": [
  "/bin/sh"
 ],
 "env": {
  "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "container": "podman"
 },
 "sdnotifyMode": "container",
 "pidns": {
  "nsmode": "default"
 },
 "utsns": {
  "nsmode": "private"
 },
 "containerCreateCommand": [
  "podman",
  "run",
  "--name",
  "container1",
  "cea2ff433c61"
 ],
 "init_container_type": "",
 "image": "cea2ff433c610f5363017404ce989632e12b953114fefc6f597a58e813c15d61",
 "ipcns": {
  "nsmode": "default"
 },
 "shm_size": 65536000,
 "shm_size_systemd": 0,
 "selinux_opts": [
  "disable"
 ],
 "userns": {
  "nsmode": "default"
 },
 "idmappings": {
  "HostUIDMapping": true,
  "HostGIDMapping": true,
  "UIDMap": null,
  "GIDMap": null,
  "AutoUserNs": false,
  "AutoUserNsOpts": {
   "Size": 0,
   "InitialSize": 0,
   "PasswdFile": "",
   "GroupFile": "",
   "AdditionalUIDMappings": null,
   "AdditionalGIDMappings": null
  }
 },
 "umask": "0022",
 "cgroupns": {
  "nsmode": "default"
 },
 "netns": {
  "nsmode": "slirp4netns"
 },
 "Networks": null,
 "use_image_hosts": false,
 "resource_limits": {}
}

根据容器生成 Specgen JSON。输出为单行。

$ podman generate spec --compact container1
{"name":"container1-clone","command":["/bin/sh"],...

根据容器生成 Specgen JSON,将输出写入指定文件。

$ podman generate spec --filename output.json container1
output.json
$ cat output.json
{
 "name": "container1-clone",
 "command": [
  "/bin/sh"
 ],
 "env": {
  "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "container": "podman"
 },
 "sdnotifyMode": "container",
 "pidns": {
  "nsmode": "default"
 },
 "utsns": {
  "nsmode": "private"
 },
 "containerCreateCommand": [
  "podman",
  "run",
  "--name",
  "container1",
  "cea2ff433c61"
 ],
 "init_container_type": "",
 "image": "cea2ff433c610f5363017404ce989632e12b953114fefc6f597a58e813c15d61",
 "ipcns": {
  "nsmode": "default"
 },
 "shm_size": 65536000,
 "shm_size_systemd": 0,
 "selinux_opts": [
  "disable"
 ],
 "userns": {
  "nsmode": "default"
 },
 "idmappings": {
  "HostUIDMapping": true,
  "HostGIDMapping": true,
  "UIDMap": null,
  "GIDMap": null,
  "AutoUserNs": false,
  "AutoUserNsOpts": {
   "Size": 0,
   "InitialSize": 0,
   "PasswdFile": "",
   "GroupFile": "",
   "AdditionalUIDMappings": null,
   "AdditionalGIDMappings": null
  }
 },
 "umask": "0022",
 "cgroupns": {
  "nsmode": "default"
 },
 "netns": {
  "nsmode": "slirp4netns"
 },
 "Networks": null,
 "use_image_hosts": false,
 "resource_limits": {}
}