docker create 是容器生命周期的创建阶段,仅初始化配置不启动进程,状态为 created,支持端口、卷、环境等全量配置校验,后续用 docker start 显式启动。

用 docker create 只创建容器不启动,是容器生命周期中“准备阶段”的标准做法——它把配置固化下来,等你确认无误后再手动启动。
基础用法:创建但不运行
命令结构和 docker run 几乎一致,只是不触发启动:
docker create [选项] 镜像名 [命令] [参数]- 例如:
docker create --name my-app -p 8080:80 -v ./data:/usr/share/nginx/html nginx - 执行后输出一串容器 ID,但
docker ps查不到它,只有docker ps -a能看到状态为Created
关键配置可提前验证
创建阶段就应用所有配置,适合检查是否冲突或遗漏:
视频生成工具。当用户说CreateVideo、创建视频、生成视频或提供文案要求制作视频时触发。支持文本转语音(通过ListenHub MCP)、模板视频裁剪合并、内容分析输出。依赖ffmpeg和ListenHub MCP Server。
- 端口是否被占用?创建时若
-p 8080:80冲突,会直接报错,避免启动后才发现 - 挂载路径是否存在、权限是否足够?
-v /host/path:/container/path在 create 阶段就会校验宿主机路径 - 镜像是否存在?不存在会自动拉取(除非加
--pull=never) - 网络模式、环境变量、重启策略(
--restart=always)等全部生效,只是不运行
后续怎么启动?
创建完成后,用 docker start 显式启动:
-
docker start my-app—— 启动并后台运行 -
docker start -a my-app—— 启动并附着到前台(类似run -it效果) - 也可用容器 ID 替代名称,支持一次启动多个容器
什么情况下必须用 create?
不是所有场景都需拆开,但以下情况 create 更安全可靠:
- 批量预置容器:先
create一百个,统一检查配置,再统一start - 安全策略要求:比如在启动前要扫描容器文件系统、注入密钥、打标签等
- 调试配置问题:只创建,进容器
docker exec -it my-app sh检查挂载、环境变量、路径权限等,确认无误再启动服务进程 - 避免意外日志/数据写入:某些镜像启动即写日志或初始化数据库,create 阶段完全静默










