我试图在docker上运行我的python脚本。我尝试了不同的方法,但无法在docker上运行它。我的python脚本如下:
import os
print ('hello')
我已经在我的mac上安装了docker。但我想知道如何制作图像然后将其推送到docker之后我想在docker上拉动并运行我的脚本。
答案 0 :(得分:11)
好的,首先为docker镜像创建一个特定的项目目录。例如:
mkdir /home/pi/Desktop/teasr/capturing
将dockerfile和脚本复制到那里,并将当前上下文更改为此目录。
cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/
cd /home/pi/Desktop/teasr/capturing
这是最佳实践,因为docker-engine在构建时所做的第一件事是读取整个当前上下文。
接下来我们将看看您的dockerfile。现在应该看起来像这样:
FROM python:latest
WORKDIR /usr/local/bin
COPY capturing.py .
CMD ["capturing.py", "-OPTIONAL_FLAG"]
您需要做的下一件事是使用智能名称构建它。通常不鼓励使用圆点。
docker build -t pulkit/capturing:1.0 .
接下来就是像你一样运行图像。
docker run -ti --name capturing pulkit/capturing:1.0
现在脚本在容器内执行,并且可能在完成时退出。
找到导致以下错误的问题后,编辑:
"standard_init_linux.go:195: exec user process caused "exec format error"
树莓派下面有一个不同的架构(ARM而不是x86_64),这可能是问题所在,但事实并非如此。如果那就是问题,那么将父图像切换到FROM armhf/python
就足够了。
BUT!错误不断发生。
因此解决这个问题的方法是在python脚本之上简单地丢失Sha-Bang。脚本中的第一行需要#!/usr/bin/env python
,这应该可以解决问题。
答案 1 :(得分:7)
按问题标题进行操作,如果不想创建docker映像,而只想使用标准的python docker映像运行脚本,则可以使用以下命令运行
docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3.7-alpine python script_to_run.py
答案 2 :(得分:5)
我在UBUNTU VERSION =“ 14.04.6”上运行的计算机上遵循了@samprog(最受接受)的回答。
并获得"standard_init_linux.go:195: exec user process caused "exec format error"
以上提到的解决方案都没有对我起作用。
按如下所示修复我的Dockerfile后修复了错误
FROM python:latest
复制 capture.py ./capturing.py
CMD [“ python”,“ / capturing.py”]
注意::如果您的脚本导入了其他模块,则需要按如下所示修改Dockerfile中的COPY语句- COPY * .py ./
希望这对其他人有用。
答案 3 :(得分:3)
您需要在脚本所在的目录中创建dockerfile。
您可以使用此模板:
FROM python:latest
COPY scriptname.py /usr/local/share/
CMD ["scriptname.py", "-flag"]
然后只需执行docker build -t pulkit/scriptname:1.0 .
即可创建您的图片。
您的图片应在docker images
下显示。如果要在本地计算机上执行,请使用docker run
。
如果您希望将其上传到DockerHub,则需要使用docker login
登录DockerHub,然后使用docker push
上传图片。
答案 4 :(得分:0)
在docker上运行python脚本的另一种方法可以是:
将本地python脚本复制到docker:
Post.select(:id, ..., 'status as int_status')
容器ID可以使用:
docker cp yourlocalscript.path container_id:/dst_path/
在docker上运行python脚本:
docker ps
答案 5 :(得分:0)
非常简单
1-转到您的Python脚本目录并创建一个带有此标题的文件,且不带任何扩展名
Dockerfile
2-现在打开docker文件并输入您的脚本名称,而不是 sci.py
(Dockerfile的内容)
FROM python:slim #i choice slim version you can choose another tag for example python:3
WORKDIR /usr/local/bin
COPY sci.py . #replace you scrip name with sci.py
CMD [ "python", "sci.py" ] #replace you scrip name with sci.py
保存它,现在您应该从此 dockerfile和脚本py
创建映像文件然后运行它
4-当cmd窗口为您打开时,键入它:
docker build -t my-python-app . #this create image in docker by this title my-python-app
5-并找到运行图像:
docker run -it --rm --name my-running-app my-python-app