Как посмотреть файл, созданный в Docker-контейнере? - PullRequest
1 голос
/ 12 марта 2019

У меня есть сценарий Python, который генерирует выходные данные в текстовом файле. Я создал образ докера для запуска сценария. Пока запускается образ, он успешно завершается, но я не вижу выходной текстовый файл.

Мой файл Docker

From python:2.7
LABEL maintainer="ABC"
LABEL description="This Dockerfile creates MTA image"
WORKDIR /Temp
ADD script_v1.py connect.txt /Temp/
RUN pip install pexpect
CMD [ "python", "/Temp/script_v1.py" ]

В скрипте script_v1 я упомянул расположение / Temp для генерации вывода

    sys.stdout=open("/Temp/EXPORT_OP.txt","w")

Я запускаю образ с хоста Windows в режиме контейнера Linux.

Ответы [ 2 ]

4 голосов
/ 12 марта 2019

Я вижу по крайней мере два простых способа достижения того, что вы хотите:

  1. Используйте bind mount .Короче говоря, вы сделаете каталог в вашей файловой системе хоста доступным для контейнера и будете использовать его путь для сохранения файла.Вывод будет доступен в этой папке.

  2. Используйте docker cp после выхода из контейнера, чтобы скопировать файл из расположения внутри контейнера в файловую систему вашего хоста.

Другим способом, который не сделает файл доступным непосредственно в вашей файловой системе хоста, будет docker exec -it <container> bash, что оставит вас с открытым терминалом внутри контейнера, который вы можетеиспользуйте cd в правильный каталог и cat файл.

0 голосов
/ 12 марта 2019

Как Юрий , как предлагается, другой способ - попробовать использовать volumes. Начните свой контейнер с тома, сопоставляющего папку на хосте с папкой в ​​контейнере, как показано ниже

docker run -d --name container_name -v /path/on/your/host:/path/in/your/container

Таким образом, любые изменения в этих двух путях будут доступны как для хоста, так и для контейнера. Вы также можете изменить команду запуска вашего контейнера CMD, как показано ниже.

CMD python /Temp/script_v1.py && tail -f /path/to/your/file

Это позволит вам увидеть изменения, внесенные в файл, с помощью команды docker logs, как показано ниже

docker logs -f container_name

Надеюсь, вы найдете это полезным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...