码头集装箱';docker compose启动的状态始终处于退出状态
这是我的docker-compose.yml:码头集装箱';docker compose启动的状态始终处于退出状态,docker,docker-compose,Docker,Docker Compose,这是我的docker-compose.yml: version: "3" services: test123: build: . container_name: "test123" 我的Dockerfile: FROM alpine:3.9 CMD ["/bin/sh"] FROM alpine:3.9 CMD ["tail", "-f", "/dev/null"] 当我跑步时: docker run -it alpine:3.9 它很好用。但当我从docke
version: "3"
services:
test123:
build: .
container_name: "test123"
我的Dockerfile:
FROM alpine:3.9
CMD ["/bin/sh"]
FROM alpine:3.9
CMD ["tail", "-f", "/dev/null"]
当我跑步时:
docker run -it alpine:3.9
它很好用。但当我从docker compose运行时:
docker-compose up -d
容器的状态始终为:Exited(0)
有什么想法吗?您的容器立即启动和退出,因为
/bin/sh
停止。这就是容器的工作原理。当它们的PID 1
停止时,它们退出。因此,为了防止sh
退出,您必须使用:
tty: true
stdin_open: true
这些选项相当于您在docker run…
命令中已经使用的-it
从:
更新了
docker compose.yml
文件:
version: "3"
services:
test123:
build: .
container_name: "test123"
tty: true
stdin_open: true
难怪您的容器退出(状态为0,表示
成功
)。
容器必须保持运行才能保持活动状态,因此运行的命令永远不能结束。这里有一个解决办法:
Dockerfile:
FROM alpine:3.9
CMD ["/bin/sh"]
FROM alpine:3.9
CMD ["tail", "-f", "/dev/null"]
这样,容器将始终保持忙碌状态,直到您停止它。在双向运行时添加
docker ps-a
的输出