WoJ Asked: 2016-12-03 05:24:50 +0800 CST2016-12-03 05:24:50 +0800 CST 2016-12-03 05:24:50 +0800 CST 是否可以编辑 docker inspect 返回的数据? 772 docker inspect返回有关 docker 图像或容器(或另一个对象)的各种有趣信息。 这些信息存储在哪里?是否可以编辑它? docker 3 个回答 Voted yurenchen 2018-10-17T19:03:05+08:002018-10-17T19:03:05+08:00 一. 手动修改 正如johnharris85所说。 直到现在 (17.12) docker no api 来编辑容器的大多数选项。 我们唯一能做的就是编辑磁盘上的配置文件: 通常,配置在文件夹中/var/lib/docker/containers/<conainerID>*/ config.v2.json 主机配置.json 编辑它们,重新启动 docker 服务,将加载新的配置。 // 在 docker 17.12 中测试 另见: https ://stackoverflow.com/a/49371983/4896468 二. 关于Synology NAS码头工人 最近我意识到 docker cmd inSynology NAS DSM system 可以通过 cmdline 或 webgui 编辑容器设置(无需重新创建它,或完全重新启动 docker 服务) 命令行 这是docker update差异: 来自 DSM 6.2 的 docker 20.10.3 来自 ubuntu 18.04 的 docker 19.03.6 $ 码头工人更新--帮助 用法:docker update [OPTIONS] CONTAINER [CONTAINER...] 更新一个或多个容器的配置 选项: --blkio-weight uint16 块 IO(相对权重),介于 10 和 1000 之间,或 0 禁用(默认 0) + --cap-add list 添加 Linux 功能 + --cap-drop list 删除 Linux 功能 --cpu-period int 限制 CPU CFS(完全公平调度器)周期 --cpu-quota int 限制 CPU CFS(完全公平调度器)配额 --cpu-rt-period int 以微秒为单位限制 CPU 实时周期 --cpu-rt-runtime int 以微秒为单位限制 CPU 实时运行时间 -c, --cpu-shares int CPU 份额(相对权重) --cpus 十进制 CPU 数量 --cpuset-cpus 字符串允许执行的 CPU (0-3, 0,1) --cpuset-mems string 允许执行的 MEM (0-3, 0,1) + -e, --env list 设置环境变量 + --env-file list 读入环境变量文件 --kernel-memory bytes 内核内存限制 + --link list 添加到另一个容器的链接 -m, --memory bytes 内存限制 --memory-reservation bytes 内存软限制 --memory-swap bytes 交换限制等于内存加上交换:'-1' 启用无限交换 --pids-limit int 调整容器 pids 限制(设置 -1 表示无限制) + --privileged 给这个容器扩展权限 + -p, --publish list 将容器的端口发布到主机 --restart string 当容器退出时应用重启策略 + -v, --volume list 绑定挂载卷 网络图形用户界面 -- 我不确定从哪里可以得到这个增强版 docker。 希望有一天这可以在官方版本中实现。 Best Answer johnharris85 2016-12-05T16:03:50+08:002016-12-05T16:03:50+08:00 不,无法编辑由docker inspect. 但是,如果您想向其中添加信息,docker inspect则可以考虑向图像/容器添加标签,然后对其进行内省(因为标签信息由 返回docker inspect)。 可以在此处找到有关标签(各种不同对象)的官方文档。 Stef 2020-04-28T09:44:38+08:002020-04-28T09:44:38+08:00 是的,@johnharris 指出没有直接编辑 api @yurenchen 是正确的,编辑/var/lib/docker/containers/<containerID>/hostconfig.json然后重新启动 docker 守护程序将更新输出docker inpect <containerID> 在 docker 更新期间,默认运行时从 更改oci为runc,我无法重新启动容器堆栈。来自sudo cat /var/lib/docker/<containerID>/hostconfig.json | jq .Runtimewas"oci"但需要"runc"在更新后输出。 手动启动sudo docker start <short_containerID>
一. 手动修改
正如
johnharris85
所说。直到现在 (17.12) docker no api 来编辑容器的大多数选项。
我们唯一能做的就是编辑磁盘上的配置文件:
通常,配置在文件夹中
/var/lib/docker/containers/<conainerID>*/
编辑它们,重新启动 docker 服务,将加载新的配置。
// 在 docker 17.12 中测试
另见: https ://stackoverflow.com/a/49371983/4896468
二. 关于
Synology NAS
码头工人最近我意识到 docker cmd in
Synology NAS DSM system
可以通过 cmdline 或 webgui 编辑容器设置(无需重新创建它,或完全重新启动 docker 服务)命令行
这是
docker update
差异:网络图形用户界面
--
我不确定从哪里可以得到这个增强版 docker。
希望有一天这可以在官方版本中实现。
不,无法编辑由
docker inspect
. 但是,如果您想向其中添加信息,docker inspect
则可以考虑向图像/容器添加标签,然后对其进行内省(因为标签信息由 返回docker inspect
)。可以在此处找到有关标签(各种不同对象)的官方文档。
是的,@johnharris 指出没有直接编辑 api
@yurenchen 是正确的,编辑
/var/lib/docker/containers/<containerID>/hostconfig.json
然后重新启动 docker 守护程序将更新输出docker inpect <containerID>
在 docker 更新期间,默认运行时从 更改
oci
为runc
,我无法重新启动容器堆栈。来自sudo cat /var/lib/docker/<containerID>/hostconfig.json | jq .Runtime
was"oci"
但需要"runc"
在更新后输出。手动启动
sudo docker start <short_containerID>