Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
码头集装箱';docker compose启动的状态始终处于退出状态_Docker_Docker Compose - Fatal编程技术网

码头集装箱';docker compose启动的状态始终处于退出状态

码头集装箱';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

这是我的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 
它很好用。但当我从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
的输出