python脚本的执行在执行docker exec命令时挂起
我是新来的码头工人。我有一个python脚本,它可以:python脚本的执行在执行docker exec命令时挂起,python,python-2.7,docker,subprocess,Python,Python 2.7,Docker,Subprocess,我是新来的码头工人。我有一个python脚本,它可以: 通过以下方式启动docker容器: call(["sudo docker run -i -t -d test /bin/sh"],shell=True) 通过以下命令删除容器内存在的软链接: call("sudo docker exec -i "+ tag1 +" rm /usr/local/lib/boost_logger",shell=True) 其中tag1是我的docker容器id 我通过以下方式将新文件从centos文件夹复
call(["sudo docker run -i -t -d test /bin/sh"],shell=True)
call("sudo docker exec -i "+ tag1 +" rm /usr/local/lib/boost_logger",shell=True)
其中tag1是我的docker容器idcall("sudo tar -cv * | sudo docker exec -i "+ tag1 +" tar x -C /usr/local/lib/", shell=True)
dockercommit = ["sudo","docker","commit","-m",'"Building docker instance"',"-a",'"Tejas"',tag1,dockerfilename]
call(dockercommit)
call("sudo docker exec -i "+ tag1 +" ln -s /usr/local/lib/libboost_logger.so /usr/local/lib/boost_logger",shell=True)
call("sudo docker exec -i "+ tag1 +" ln -s /usr/local/lib/libredis_client.so /usr/local/lib/redis_client",shell=True)
call("sudo tar -cv * | sudo docker exec -i "+ tag1 +" tar x -C /usr/local/lib/", shell=True)
dockercommit = ["sudo","docker","commit","-m",'"Building docker instance"',"-a",'"Tejas"',tag1,dockerfilename]
call(dockercommit)
但是,如果我有更多的实例,或者可能是在同一脚本的第二次或第三次迭代期间,释放控件需要更长的时间。使用
shell=True添加用户输入是强烈反对的
报告中提到:
警告:执行包含来自不受信任源的未初始化输入的shell命令会使程序易受shell注入攻击,这是一个严重的安全缺陷,可能导致任意命令执行。因此,在命令字符串由外部输入构造的情况下,强烈建议不要使用shell=True:
您应该按照注释中的说明使用。是test
您自己的图像吗?如果是这样,您可以共享Dockerfile吗?您认为-i
选项的作用是什么?