繁体   English   中英

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

[英]How to run my python script on docker?

在此处输入图片说明 在此处输入图片说明 我正在尝试在 docker 上运行我的 python 脚本。 我尝试了不同的方法来做到这一点,但无法在 docker 上运行它。 我的python脚本如下:

import os

print ('hello') 

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

好的,首先为您的 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"

在 raspberry pi 下有一个不同的架构(ARM 而不是 x86_64),这可能是问题所在,但不是。 如果那是问题所在,那么将父映像切换到FROM armhf/python就足够了。

来源

但! 错误不断发生。

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

来源

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

您需要在脚本所在的目录中创建一个 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 docker login DockerHub,然后使用docker docker push上传镜像。

我在运行 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 ./

希望这对其他人有用。

在 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

它非常简单

1- 转到您的 Python 脚本目录并创建一个具有此标题的文件,没有任何扩展名

文件

在此处输入图片说明

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 path address 文件夹写CMD按回车键: 在此处输入图片说明

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 

在此处输入图片说明

我最近遇到了这个问题,python2 和 python3 之间的这种依赖关系让我感到困惑。 这是解决方案。

将当前工作目录绑定到运行 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 实例中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM