【发布时间】:2022-01-14 06:18:53
【问题描述】:
这只是一个理论问题。有没有办法运行 docker 但只运行一个特定的脚本而不更改 Dockerfile?也许使用docker run [container] 命令?
Dockerfile:
FROM python:3.8
ADD main1.py
ADD main2.py
ADD main3.py
ADD main4.py
ADD main5.py
理论指挥:
docker run docker-test main2.py
【问题讨论】:
-
这应该和你描述的完全一样。我仍然会在图像中设置一些默认的
CMD(并且通常更喜欢COPY而不是ADD,除非您想下载 URL 或解压缩存档文件)。试一试有用吗? -
@DavidMaze 我现在这样试了: Dockerfile
FROM python:3.8ADD main.py .ADD main1.py .ADD main2.py .ADD main3.py .CMD [ "python", "./main.py" ]我运行的命令:docker build -t docker-test .docker run docker-test main1.py错误 docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“main1.py”:可执行文件在 $PATH 中找不到文件:未知。 ERRO[0001] 错误等待容器:上下文取消 -
你可以尝试
docker run ... ./main3.py,或者在Dockerfile中设置ENV PATH,这样正常的路径查找就可以找到脚本。还要确保脚本是可执行的(在主机上运行chmod +x main*.py应该带入映像)并且它们以“shebang”行#!/usr/bin/env python3开头。这应该与直接在主机上运行脚本所需的操作相同,无需 Docker。 -
docker run docker-test ./main3.py给出与上述相同的错误。如果你有一些空闲时间,你能给我完整的命令/Dockerfiles 到你给出的提示吗?我是 Ubuntu cmd 和 docker 新手,所以我不知道如何设置您的建议
标签: python docker dockerfile docker-container