我不能在docker容器中封装我的python代码

我不能在docker容器中封装我的python代码,python,docker,Python,Docker,我在学docker。我想练习在运行python映像后如何查看docker容器内的日志 这是我要执行的python代码: #loop.py #loop.py 导入时间 尽管如此: 打印(‘测试’) 时间。睡眠(3) 这是docker文件: 来自python:3.8-slim-buster ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 复制requirements.txt。 运行python-mpip安装-r requirements.t

我在学docker。我想练习在运行python映像后如何查看docker容器内的日志

这是我要执行的python代码:

#loop.py
#loop.py
导入时间
尽管如此:
打印(‘测试’)
时间。睡眠(3)
这是docker文件:

来自python:3.8-slim-buster
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
复制requirements.txt。
运行python-mpip安装-r requirements.txt
WORKDIR/app
抄袭/应用程序
运行adduser-u 5678--禁用密码--gecos“”appuser&&chown-R appuser/app
用户应用程序用户
CMD[“python”,“loop.py”]
我构建的图像如下所示:

docker build-t image\u测试。
一旦创建了它(我可以看到它正在执行
docker image ls
),我想运行它,我有不同的方法,但容器被创建并立即终止:

docker运行

我也试过:

docker-docker-run sleep infinity
。然后我可以做:
docker exec-it bash
,我可以在容器内运行
python loop.py
,但它会自动结束

我也修改了CMD,如下所示:

CMD[“python”、“-u”、“loop.py”]

我试过:

docker run-it--entrypoint=/bin/bash image\u test
我直接进入容器内部的终端,但是如果我像以前一样执行python代码,它会自动结束,而不是运行无限循环


为什么?

运行python程序不需要bash。您可以使用它执行到正在运行的容器中。但是只要python连接到标准输出,容器就会运行

我运行了这些命令,它们都在我的机器上工作

sudo docker run image_test
sudo docker run -d image_test
sudo docker ps
sudo docker logs -f 041
sudo docker exec -ti 041 bash
sudo docker stop 041
sudo docker rm 041

默认情况下,容器中的进程标准输出不公开。您可能希望使用
-a
选项来运行
docker
来查看它。您还可以将主机目录绑定到容器文件系统中的目录,从而有效地从容器“导出”文件。