Python 如何让docker容器永远运行

Python 如何让docker容器永远运行,python,docker,dockerfile,Python,Docker,Dockerfile,我创建了一个Dockerfile,用于设置python环境,以便人们在其主机中运行映像时,可以运行我的python文件,而无需自己安装多个python包 问题是在我构建并运行映像后,容器立即停止,因为它已完成 如何使容器永远运行?我的理解是,在人们拉取并运行我的图像之后,他们可以通过运行python file.python开始运行python文件 我的Dockerfile看起来可能不正确。我仍在学习: FROM python:3-alpine ADD . /app WORKDIR /app RU

我创建了一个Dockerfile,用于设置python环境,以便人们在其主机中运行映像时,可以运行我的python文件,而无需自己安装多个python包

问题是在我构建并运行映像后,容器立即停止,因为它已完成

如何使容器永远运行?我的理解是,在人们拉取并运行我的图像之后,他们可以通过运行python file.python开始运行python文件

我的Dockerfile看起来可能不正确。我仍在学习:

FROM python:3-alpine
ADD . /app
WORKDIR /app
RUN pip install configparser

取决于你如何运行你的形象。。您可以执行下面的命令,使其具有交互性,并且可以在contaner运行后在其内部执行更多命令

docker run -it <your-image> bash

取决于你如何运行你的形象。。您可以执行下面的命令,使其具有交互性,并且可以在contaner运行后在其内部执行更多命令

docker run -it <your-image> bash
从中,我们可以知道,docker容器在分离模式(最常见的-d选项)下运行时,设计为在根据图像构建容器时应运行的初始入口点命令程序不再在前台运行后立即关闭。因此,为了保持docker容器运行,即使内部程序已经完成了

只需添加CMD tail-f/dev/null作为dockerfile的最后一行 更重要的是,我们应该了解docker的用途以及如何正确使用它。尝试使用DOCKER作为主机应用程序的环境基础并不是一个好的选择,DOCKER被设计成独立运行应用程序环境。应用程序应通过docker build放入docker映像,并在运行时在docker容器中运行。

从中,我们可以知道,docker容器在分离模式下运行时是最常见的-d选项,设计为在根据图像构建容器时应运行的初始入口点命令程序不再在前台运行后立即关闭。因此,为了保持docker容器运行,即使内部程序已经完成了

只需添加CMD tail-f/dev/null作为dockerfile的最后一行
更重要的是,我们应该了解docker的用途以及如何正确使用它。尝试使用DOCKER作为主机应用程序的环境基础并不是一个好的选择,DOCKER被设计成独立运行应用程序环境。应用程序应通过docker build放入docker映像,并在运行时在docker容器中运行。

您的docker文件缺少CMD。它现在什么也做不了

您需要附加以下内容

## Run the script
CMD [ "python", "-u", "./your-script.py"]
我添加了-u,以便Python在无缓冲输出模式下运行。如果不这样做,则可能看不到脚本的输出

如果现在启动附加的容器,则可以查看其输出

docker run your-container
您还可以将其分离运行,然后再附加

docker run -d --name container-name your-container
命名容器使管理其生命周期变得非常简单

使用以下两种方法之一附加到输出

docker logs container-name 
或者使用

docker attach container-name

您的Dockerfile缺少CMD。它现在什么也做不了

您需要附加以下内容

## Run the script
CMD [ "python", "-u", "./your-script.py"]
我添加了-u,以便Python在无缓冲输出模式下运行。如果不这样做,则可能看不到脚本的输出

如果现在启动附加的容器,则可以查看其输出

docker run your-container
您还可以将其分离运行,然后再附加

docker run -d --name container-name your-container
命名容器使管理其生命周期变得非常简单

使用以下两种方法之一附加到输出

docker logs container-name 
或者使用

docker attach container-name

程序退出后,容器应该做什么?你为什么不想让它退出?您还可以看看,有一些标准方法可以打包Python应用程序,这些应用程序不需要根访问权限或其他Docker技巧即可运行。谢谢David,我想运行容器,这样人们就可以开始执行pyhton文件,而无需自己安装不同的Python包。所以这个容器应该永远运行,这样他们才能做到这一点。如果容器退出,那么他们如何执行python和其他包?docker run yourimage运行test_python.py脚本,当该脚本退出时,容器退出。你可以任意多次运行docker run命令。谢谢David。所以每次人们运行他们的文件时,他们都需要运行docker run XXX?我以为他们会运行docker run XXX,然后他们就可以开始使用python了。谢谢David,如果不同的人需要运行不同的python文件呢?就像A想要使用容器运行python test_pythonA.py,B想要使用容器运行python test_pythonB.py一样?程序退出后,容器应该做什么?你为什么不想让它退出?您还可以看看,有一些标准方法可以打包Python应用程序,这些应用程序不需要根访问权限或其他Docker技巧即可运行。谢谢David,我想运行容器,以便人们可以开始执行pyhton文件
无需安装不同的python包。所以这个容器应该永远运行,这样他们才能做到这一点。如果容器退出,那么他们如何执行python和其他包?docker run yourimage运行test_python.py脚本,当该脚本退出时,容器退出。你可以任意多次运行docker run命令。谢谢David。所以每次人们运行他们的文件时,他们都需要运行docker run XXX?我以为他们会运行docker run XXX,然后他们就可以开始使用python了。谢谢David,如果不同的人需要运行不同的python文件呢?就像A想要使用容器运行python测试_pythonA.py一样,B想要使用容器运行python测试_pythonB.py吗?