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

Pul*_*kit 11 python docker dockerfile docker-swarm

在此输入图像描述在此输入图像描述我试图在docker上运行我的python脚本.我尝试了不同的方法,但无法在docker上运行它.我的python脚本如下:

import os

print ('hello') 
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*332 21

按照问题标题,如果不想创建 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
Run Code Online (Sandbox Code Playgroud)


sam*_*rog 16

好的,首先为docker镜像创建一个特定的项目目录.例如:

mkdir /home/pi/Desktop/teasr/capturing
Run Code Online (Sandbox Code Playgroud)

将dockerfile和脚本复制到那里并将当前上下文更改为此目录.

cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/

cd /home/pi/Desktop/teasr/capturing
Run Code Online (Sandbox Code Playgroud)

这是最佳实践,因为docker-engine在构建时所做的第一件事是读取整个当前上下文.

接下来我们将看看您的dockerfile.现在应该看起来像这样:

FROM python:latest

WORKDIR /usr/local/bin

COPY capturing.py .

CMD ["capturing.py", "-OPTIONAL_FLAG"]
Run Code Online (Sandbox Code Playgroud)

您需要做的下一件事是使用智能名称构建它.通常不鼓励使用圆点.

docker build -t pulkit/capturing:1.0 .
Run Code Online (Sandbox Code Playgroud)

接下来就是像你一样运行图像.

docker run -ti --name capturing pulkit/capturing:1.0
Run Code Online (Sandbox Code Playgroud)

该脚本现在在容器执行,并可能在完成后退出.

找到导致以下错误的问题后编辑:

"standard_init_linux.go:195: exec user process caused "exec format error"

树莓派(ARM而不是x86_64)下面有一个不同的架构,这可能是问题所在,但事实并非如此.如果那就是问题,那么将父图像切换到FROM armhf/python足够了.

资源

但!错误不断发生.

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

资源


sam*_*rog 6

您需要在脚本所在的目录中创建一个 dockerfile。

你可以拿这个模板:

FROM python:latest

COPY scriptname.py /usr/local/share/

CMD ["scriptname.py", "-flag"]
Run Code Online (Sandbox Code Playgroud)

然后只需执行即可docker build -t pulkit/scriptname:1.0 .创建您的图像。

您的图像应该在 下可见docker images。如果要在本地计算机上执行它,请使用docker run.

如果要上传到DockerHub,需要用 登录DockerHub docker login,然后用 上传镜像docker push


Nit*_*dra 6

我在运行 UBUNTU VERSION="14.04.6" 的机器上关注了@samprog(最被接受的)答案。并且得到"standard_init_linux.go:195: exec user process caused "exec format error"

上面提到的任何解决方案都不适合我。

修改我的Dockerfile后报错如下

来自蟒蛇:最新

复制capture.py ./capturing.py

CMD ["python","capturing.py"]

注意:如果您的脚本导入了一些其他模块,那么您需要按如下方式修改 Dockerfile 中的 COPY 语句 - COPY *.py ./

希望这对其他人有用。