Python docker 容器在完成 运行 应用程序后立即关闭,即使指定留在 -d -t

Python docker container shuts down immediately after finishing running the app, even if specified to stay in -d -t

我有一个 dockerfile

FROM python:3

WORKDIR /app

ADD ./venv ./venv

ADD ./data/file1.csv.gz ./data/file1.csv.gz

ADD ./data/file2.csv.gz ./data/file2.csv.gz

ADD ./requirements.txt ./venv/requirements.txt

WORKDIR /app/venv

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python", "./src/script.py", "/app/data/file1.csv.gz", "/app/data/file2.csv.gz"]

从中构建图像并 运行 后,图像按预期运行应用程序,但容器在完成后立即关闭。这肯定是有问题的,因为我不能期待输出文件。

我已经尝试使用 docker run -d -t <imgname> 并且 docker ps 显示应用程序几秒钟,但是再次,一旦它完成该过程,容器就会自行关闭。

所以无法访问,即使docker exec <imgid> -it --entrypoint /bin/bash,它也立即退出。

我也试过在最后一个 CMD 之后添加最后一个 RUN /bin/bash 但它也没有帮助。

实际上我可以做什么才能登录到容器并检查文件?

只要容器没有被移除,您就可以获取数据。您可以使用 docker ps -a.

找到容器的名称

然后,如果您知道文件的位置,可以使用

将其复制到您的主机
docker cp <container name>:<file> .

或者,您可以将容器的内容提交到一个新的图像中,然后 运行 一个 shell 在其中使用

docker commit <container name> newimagename
docker run --rm -it newimagename /bin/bash

然后您可以在容器中四处查看并找到您的文件。

遗憾的是,无法再次启动容器并在其中四处查看。 docker start 将启动容器,但会 运行 再次执行与 运行 相同的命令,当您执行 docker run.