подпроцесс python для копирования файлов с хоста на контейнер - PullRequest
0 голосов
/ 16 июня 2019

Нужна помощь в подпроцессе Python для копирования файла с хоста в контейнер. Вот код Python, который я пробовал

    import subprocess
    output=subprocess.check_output(['docker','ps'],
    universal_newlines=True)
    x=output.split('\n')
    for i in x:
        if i.__contains__("name_of_container"):
            container_id=i[:12]
    subprocess.call(["docker cp", "some_file.py", container_id:"/tmp"])
    subprocess.call(['docker','exec','-it', container_id,'bash'])

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

Некоторые ошибки вашего кода:

  1. container_id:"/tmp" не является допустимой грамматикой питона
  2. docker cp не является допустимой командой в подпроцессе
  3. docker cp Не в цикле
0 голосов
/ 16 июня 2019

Это должно работать:

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