Docker mount не работает ... что мне здесь не хватает? - PullRequest
0 голосов
/ 24 сентября 2018

Мой Dockerfile выглядит следующим образом:

FROM python:2.7
COPY . /temp
WORKDIR /temp
CMD ["python", "app.py", "100"]

Мой файл Python выглядит следующим образом:

import sys
print "This is the name of the script: ", sys.argv[0]
print "Number of arguments: ", len(sys.argv)
print "The arguments are: " , str(sys.argv)
file = open("log.log", "a")

x = int(sys.argv[1])
print "received value of x is: ", x

if x < 100:
    file.write('entered value is less than 100: Exiting with exit code 0; SUCEESS')
elif x == 100:
    file.write('entered value is equal to 100: Exiting with exit code 1; SUCEESS')
else:
    file.write('entered value is more than 100: Exiting with exit code 2; FAILED')

Способ создания этого контейнера следующий: docker build python-container .

Я запускаю контейнер следующим образом: docker run -v ~/logs/:app python-container

Мне нужно смонтировать каталог контейнера, в котором выполняется вход на мой хост, чтобы был доступен файл журнала, созданный python.на моем хост-компьютере.

Но, к сожалению, этого не происходит,

Отладка сделана мной:

  1. Я изначально использовал python в ENTRYPOINT, нокажется, что команды в ENTRYPOINT сжимаются и связываются в контейнере, а затем контейнер монтируется и, таким образом, происходит сбой.

  2. Я продолжал работать контейнер вечно, используя ENTRYPOINT ["tail", "-f", "/dev/null"], но все ещеэто не удалось.

  3. Я также использовал тома docket, создавал тома, монтировал их, а затем запускал контейнеры, но журнал по-прежнему недоступен снаружи.

Мой вопрос здесь, что яотсутствует?

В конечном счете, моя цель состоит в том, чтобы разные контейнеры выполняли разные задания python и генерировали разные файлы журналов в определенном каталоге на моем хосте ...

Я был бы очень признателен за любую помощь в этомдело ...

1 Ответ

0 голосов
/ 25 сентября 2018

COPY команда не то, что вы ищете, она просто копирует каталог в контейнер.

То, что вы ищете, - это монтирование тома.

https://docs.docker.com/storage/volumes/

Изменить для комментария ниже:

Просто попробуйте это:

На хосте:

mkdir /tmp/stack_demo touch /tmp/stack_demo/log.txt docker run -ti -v /tmp/stack_demo:/tmp/stack_demo alpine:latest /bin/sh

В контейнере: echo "log from inside container" > /tmp/stack_demo/log.txt

Выйти из контейнера, используя ctrl + D, затем на хосте:

cat /tmp/stack_demo/log.txt => log from inside container

...