Docker exec с подпроцессом Python. Ошибка Popen ⇐ Python

Программы на Python
Anonymous
Docker exec с подпроцессом Python. Ошибка Popen

Сообщение Anonymous »

Цель
Использовать docker exec на экземпляре EC2, чтобы запустить команду в другом контейнере, находящемся в этом экземпляре.
Код:

Код: Выделить всё

from base64 import decode
import json
import subprocess

with open('temp.json', 'r') as file:
event = json.load(file)
encoded = json.dumps(event)

a = ['/usr/bin/docker', 'exec', '-it', '4015980c98fb', 'python',  '-m', 'code.handler', encoded]

if __name__ == '__main__':
with subprocess.Popen(a, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as test:
print(f'ARGS: {test.args}')
for line in test.stdout:
line = line.decode().strip()
print(line)
Наблюдаемое поведение

На локальном компьютере: подпроцесс правильно инициируется и запускается

AWS ECS: Невозможно подключиться к демону Docker по адресу unix:///var/run/docker.sock. Демон Docker запущен?
  • Docker запущен? Изнутри выполняемой задачи ECS:

Код: Выделить всё

root@532795fd1aad:/# docker -h
Flag shorthand -h has been deprecated, use --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
run         Create and run a new container from an image
...
shell=True
Текст использования печатается локально и в AWS ECS, но команда отображается правильно:

Код: Выделить всё

ARGS: ['/usr/bin/docker', 'exec', '-it', '4015980c98fb', 'python', '-m', 'code.handler' '{...}',
Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
--config string      Location of client config files (default "/home/michael/.docker")
-c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context
use")
...
Что я здесь упускаю/не понимаю?

Подробнее здесь: https://stackoverflow.com/questions/790 ... pen-failes

Вернуться в «Python»