可通过 docker inspect 查看容器 hostconfig 和 config 字段反推参数,或用 runlike 工具生成等效 docker run 命令;ui 的“重新创建”会丢失 --sysctl、--ulimit、挂载标志等关键配置,推荐用 docker-compose.yml 或脚本固化配置。

不能直接“保存命令”,但可以还原出等效的 docker run 命令 —— Docker Desktop 本身不记录你点选的配置对应的完整 CLI 命令,但所有操作都映射到标准 Docker API,因此能反推。
怎么看 Docker Desktop 创建容器时用了哪些参数
Docker Desktop 的 UI 操作最终会调用 docker run,但不会在界面上显示或导出该命令。要确认实际生效的参数,唯一可靠方式是查运行中的容器详情:
- 在 Containers 标签页找到目标容器 → 点击容器名进入详情页 → 切到 “Inspect” 标签 → 查看 JSON 中的
HostConfig和Config字段 -
HostConfig.Binds对应-v挂载;HostConfig.PortBindings对应-p映射;HostConfig.NetworkMode对应--network -
Config.Env是环境变量(-e);Config.Cmd是启动命令;Config.Image是镜像名 - 注意:UI 中勾选的 “Auto remove” 对应
HostConfig.AutoRemove: true,等价于 CLI 的--rm
怎么把已有容器的配置转成可复用的 docker run 命令
手动拼写容易漏掉隐式参数(比如默认网络、安全选项),推荐用社区工具 docker-container-export 或更轻量的 runlike:
- 先安装:
pip install runlike(需 Python 环境) - 执行:
runlike <container-name></container-name>,它会输出接近原始 UI 配置的完整docker run命令 - 示例输出:
docker run --name=my-nginx -d -p 8080:80 -v /tmp/aaa:/usr/share/nginx/html nginx:latest - ⚠️ 注意:
runlike不处理 volume driver 配置、seccomp/profile 等高级选项,复杂场景仍需人工核对InspectJSON
为什么不能依赖 Docker Desktop 的“重新创建”功能来备份配置
UI 上的 “Duplicate/Edit config” 只保留部分字段(如端口、卷、环境变量),但会丢弃以下关键信息:
- 自定义
--sysctl、--ulimit、--cap-add等安全与内核参数 - 挂载时的
:ro、:z、:Z等 SELinux 或访问控制标志 - 通过
--network container:xxx复用其他容器网络的模式 - 所有以
--开头的非标准参数(例如某些私有镜像要求的启动标记)
这些缺失会导致重建后行为不一致,尤其是涉及权限、网络隔离或资源限制的生产服务。
真正可靠的配置留存方式
别依赖 UI 记录,从源头固化配置:
- 用
docker-compose.yml描述容器,比 GUI 更完整、可版本控制、可复现;Docker Desktop 原生支持 Compose 启动 - 如果必须用 CLI,把每次
docker run命令写进 shell 脚本或 Makefile,加注释说明每个参数用途 - 对已存在的容器,先用
runlike生成初稿,再对照docker inspect补全缺失项,存为文档或脚本 - 镜像构建过程务必用
Dockerfile,而不是靠docker commit快照 —— 后者无法追溯配置变更历史
最易被忽略的一点:Docker Desktop 的设置(如 WSL2 分区位置、镜像加速器地址、Kubernetes 开关)和容器配置是两套体系,前者存在 %APPDATA%\Docker\settings.json(Windows)或 ~/Library/Group Containers/group.com.docker/settings.json(macOS),不参与容器导出,必须单独备份。











