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

How to run my python script on docker?

我正在尝试 运行 我的 python 脚本 docker。我尝试了不同的方法来做到这一点,但无法在 docker 上 运行。我的 python 脚本如下:

import os

print ('hello') 

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

您需要在脚本所在的目录中创建一个 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上传图像。

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

mkdir /home/pi/Desktop/teasr/capturing

将您的 docker 文件和脚本复制到其中,并将当前上下文更改为该目录。

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

cd /home/pi/Desktop/teasr/capturing

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

接下来我们将查看您的 docker 文件。它现在应该看起来像这样:

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"

raspberry pi 下有一个不同的体系结构(ARM 而不是 x86_64),这可能是问题所在,但事实并非如此。如果那是问题所在,将父图像切换到 FROM armhf/python 就足够了。

Source

但是!错误不断发生。

所以这个问题的解决方案是在 python 脚本之上简单地缺少 Sha-Bang。脚本中的第一行必须是 #!/usr/bin/env python,这应该可以解决问题。

Source

在 docker 上 运行 python 脚本的另一种方法可以是:
将本地 python 脚本复制到 docker:

docker cp yourlocalscript.path container_id:/dst_path/ 

可以使用以下方法找到容器 ID:

docker ps 

运行 docker 上的 python 脚本:

docker exec -it python /container_script_path.py

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

None 上面提到的对我有用的解决方案。

修改我的 Dockerfile 后的错误如下

python:latest

复制 capturing.py ./capturing.py

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

Note: If your script import some other module then you need to modify COPY statement in your Dockerfile as follows - COPY *.py ./

希望这对其他人有用。

按照问题标题,如果不想创建 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

很简单

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

保存它,现在您应该从这个 docker 文件和脚本 py

创建图像文件

还有下一个运行它

3-在路径地址文件夹写CMD回车键:

4-当 cmd window 为您打开时,输入:

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 

我最近遇到了这个问题,python2 和 python3 之间的这种依赖性 HELL 搞定了我。这是解决方案。

使用 python2 和 pip2 运行.

将您当前的工作目录绑定到 Docker 容器
  1. 拉取 docker 图像。

docker pull frolvlad/alpine-python2

  1. 将此别名添加到 /home/user/.zshrc 或 /home/user/.bashrc

alias python2='docker run -it --rm --name python2 -v "$PWD":"$PWD" -w "$PWD" frolvlad/alpine-python2'

在您的 CMD 中输入 python2 后,您将进入 Docker 实例。