如何在 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
就足够了。
但是!错误不断发生。
所以这个问题的解决方案是在 python 脚本之上简单地缺少 Sha-Bang。脚本中的第一行必须是 #!/usr/bin/env python
,这应该可以解决问题。
在 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
创建图像文件
还有下一个运行它
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 容器
- 拉取 docker 图像。
docker pull frolvlad/alpine-python2
- 将此别名添加到 /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 实例。
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
就足够了。
但是!错误不断发生。
所以这个问题的解决方案是在 python 脚本之上简单地缺少 Sha-Bang。脚本中的第一行必须是 #!/usr/bin/env python
,这应该可以解决问题。
在 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
创建图像文件还有下一个运行它
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 容器- 拉取 docker 图像。
docker pull frolvlad/alpine-python2
- 将此别名添加到 /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 实例。