【问题标题】:How to execute a local python script into a docker from another python script?如何将本地 python 脚本从另一个 python 脚本执行到 docker 中?
【发布时间】:2017-07-26 10:23:46
【问题描述】:

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

我的本​​地机器上有一个 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 已在终端中启动:

docker run -it -p 8888:8888 my_docker

【问题讨论】:

    标签: python docker external-script


    【解决方案1】:

    借助-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

    【讨论】:

    • 是的,我知道我可以做到这一点,但这里的问题是我如何从另一个本地 python 脚本中做到这一点,我无法弄清楚如何做到这一点,我的意思是script_1 必须在本地机器上运行,然后在 rutine 的某个点它必须调用 docker 中的另一个脚本(script_2)...
    • 你必须从 shell 执行。尝试使用 python 在 shell 中启动您的命令:stackoverflow.com/questions/89228/…
    【解决方案2】:

    你可以使用 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")
    ... 
    

    【讨论】:

      【解决方案3】:

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

      注意:要使用“docker exec”,您必须使用 docker run 运行容器

      【讨论】:

      • 我们如何保持运行?
      • @NikhilVJ 从终端运行 docker 时,您可以添加标志 -d 以从终端分离 docker 的执行,然后您可以使用同一终端执行命令 docker exec... 或使用另一个终端
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      相关资源
      最近更新 更多