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

时间:2017-07-26 10:23:46

标签: python docker external-script

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

我的本​​地机器中有一个python脚本执行很多东西,在某些情况下它必须调用另一个必须执行到docker容器中的python脚本。这样的脚本有一些输入参数,它返回一些结果。

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

示例:

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 run -it -p 8888:8888 my_docker

3 个答案:

答案 0 :(得分:4)

您可以使用-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 exec -ti docker_name py /myFile.py

docker_name命令后,

docker 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的更多详情。

答案 1 :(得分:0)

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

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

运行容器

答案 2 :(得分:0)

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

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")
...