如何将本地 python 脚本从另一个 python 脚本执行到 docker?

How to execute a local python script into a docker from another python script?

让我澄清一下我想做什么。

我的本地机器上有一个 python 脚本,它执行很多事情,在某些时候它必须调用另一个 python 脚本,该脚本必须在 docker 中执行容器。这样的脚本有一些输入参数,它 returns 有一些结果。

所以我想弄清楚如何做到这一点。

示例:

def function()
    do stuff
         .
         .
         .
    do more stuff

    ''' call another local script that must be executed into a docker'''

    result = execute_python_script_into_a_docker(python script arguments)

docker 已在终端中启动为:

docker run -it -p 8888:8888 my_docker

由于 -v 选项,您可以将文件添加到 docker 容器中。

docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker

并在你的 docker 中执行你的 python : py /myFile.py

或与主持人:

docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker py /myFile.py

即使你的docker已经运行宁

docker exec -ti docker_name py /myFile.py

docker_namedocker ps 命令后可用。

或者您可以在 运行 命令中指定名称,例如:

docker run -it --name docker_name -v myFile.py:/myFile.py -p 8888:8888 my_docker

就像:

-v absoluteHostPath:absoluteRemotePath

您也可以用同样的方式指定文件夹:

-v myFolder:/customPath/myFolder

更多详情请见 docker documentation

你必须使用 docker exec -it image_name python /filename

注意:要使用 'docker exec',您必须 运行 使用 docker run

的容器

您可以使用 docker 的 python SDK library。首先,您需要将脚本移到那里,我建议您在创建容器时或在启动容器时执行此操作,如 Callmemath 所述:

docker run -it -v myFile.py:/myFile.py -p 8888:8888 my_docker

然后运行使用库的脚本:

...
client = docker.client.from_env()
container = client.containers.get(CONTAINER_ID)
exit_code, output = container.exec_run("python your_script.py script_args")
...