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,这应该解决问题.
您需要在脚本所在的目录中创建一个 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。
我在运行 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 ./
希望这对其他人有用。
| 归档时间: |
|
| 查看次数: |
46299 次 |
| 最近记录: |