如何在docker上运行我的python脚本?

时间:2017-11-09 13:09:32

标签: python docker dockerfile docker-swarm

enter image description here enter image description here我试图在docker上运行我的python脚本。我尝试了不同的方法,但无法在docker上运行它。我的python脚本如下:

import os

print ('hello') 

我已经在我的mac上安装了docker。但我想知道如何制作图像然后将其推送到docker之后我想在docker上拉动并运行我的脚本。

6 个答案:

答案 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就足够了。

Source

BUT!错误不断发生。

因此解决这个问题的方法是在python脚本之上简单地丢失Sha-Bang。脚本中的第一行需要#!/usr/bin/env python,这应该可以解决问题。

Source

答案 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

enter image description here

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

创建映像文件

然后运行它

3-in路径地址文件夹中写入CMD并按Enter键: enter image description here

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 

enter image description here