如何在Docker中无命令使用Scratch镜像?解决docker-compose运行报错
解决Scratch镜像Docker Compose启动报错:No command specified
为啥会报错?
Scratch是Docker最基础的空镜像,里面啥都没有——没有可执行程序、没有shell,连默认的启动命令都不存在。Docker启动容器时必须明确要执行的指令,没指定的话自然就触发这个报错了。
不用指定命令的解决办法
在你的docker-compose.yml里添加两行配置:tty: true和stdin_open: true。这俩配置会让容器分配一个交互式伪终端,并且保持标准输入打开,以此维持容器运行状态,完全不需要额外指定命令。
修改后的docker-compose.yml代码:
version: '3' networks: common_network: name: common_network driver: bridge services: app: build: context: . dockerfile: scratch.Dockerfile container_name: apps env_file: - .env tty: true stdin_open: true
额外说明
- 这种方式适合用空容器当网络节点、挂载卷或者做测试环境的场景
- 要注意:Scratch镜像本身没有shell,就算容器跑起来了,你也没法用
docker exec进去执行命令。如果需要shell功能,得在Dockerfile里复制shell文件或者基于带shell的镜像构建。
内容的提问来源于stack exchange,提问作者M a m a D
相关产品推荐
相关产品推荐

