Это должно работать:
import subprocess
output=subprocess.check_output(['docker','ps'],
universal_newlines=True)
x=output.split('\n')
for i in x:
if i.__contains__("inspiring_sinoussi"):
container_id=i[:12]
container_id_with_path=container_id+":/tmp"
subprocess.call(["docker", "cp", "/root/some_file.py", container_id_with_path])
subprocess.call(['docker','exec','-it', container_id,'bash'])
На самом деле в вызове subprocess
все аргументы разделяются запятой. В вашем случае container_id:/tmp
должен быть единственным аргументом, поскольку между ними нет пробелов. Так как container_id - это переменная в вашем случае, она не может быть объединена с :/tmp
. Поэтому я создал новую переменную container_id_with_path
, в которой есть путь :/tmp
.
Запуск скрипта дает мне желаемый результат.
$ python copy.py
/ # ls /tmp/
hsperfdata_root tomcat-docbase.1849924566121837123.9090
some_file.py