Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将本地python脚本从另一个python脚本执行到docker中?_Python_Docker_External Script - Fatal编程技术网

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

如何将本地python脚本从另一个python脚本执行到docker中?,python,docker,external-script,Python,Docker,External Script,让我澄清一下我想做什么 在我的本地机器中有一个python脚本,它执行很多东西,在某些情况下,它必须调用另一个python脚本,该脚本必须在docker容器中执行。这样的脚本有一些输入参数,并返回一些结果 所以我想知道怎么做 例如: def function() do stuff . . . do more stuff ''' call another local script that must be execut

让我澄清一下我想做什么

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

所以我想知道怎么做

例如:

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\u name py/myFile.py

docker\u name
在执行
docker ps
命令后可用

或者可以在run命令中指定名称,如:
docker run-it--name docker\u name-v myFile.py:/myFile.py-p 8888:8888 my\u docker


就像:
-v absoluteHostPath:absoluteRemotePath

您也可以用同样的方法指定文件夹
-v myFolder:/customPath/myFolder


更多详细信息请访问。

您必须使用
docker exec-it image\u name python/filename

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

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

docker run-it-v myFile.py:/myFile.py-p 8888:8888我的docker
然后使用库运行脚本:

。。。
client=docker.client.from_env()
container=client.containers.get(container\u ID)
exit_code,output=container.exec_run(“python your_script.py script_args”)
... 

是的,我知道我可以做到这一点,但这里的问题是我如何从另一个本地python脚本中做到这一点,我不知道如何做到这一点,我的意思是脚本1必须在本地机器上运行,然后在rutine的某个点上,它必须调用docker中的另一个脚本(脚本2)……您必须从shell执行。尝试用python在shell中启动您的命令:如何让它保持运行?@NikhilVJ从终端运行docker时,您可以添加-d标志以从终端分离docker的执行,然后您可以使用相同的终端执行命令docker exec。。。或者使用另一个终端