Использовать локальный файл в контейнере Docker через Jupyter
Я полный новичок в Docker, которому очень трудно понять, как все работает. Вот что я сделал:
Я следовал руководству по созданию изображения, а затем контейнера для API обнаружения объектов TensorFlow из Dockerfile. В конце Dockerfile запускается блокнот Jupyter, и я могу видеть и редактировать все, что я клонировал через github.
Ссылка на руководство: https://towardsdatascience.com/tensorflow-object-detection-with-docker-from-scratch-5e015b639b0b. Я должен был сделать некоторые модификации, чтобы заставить это работать, но это работает сейчас.
Затем я отправил это изображение в Dockerhub с именем: tf_od_api:part1.
Я использую эту команду для запуска контейнера с именем tensflow:
docker run --runtime=nvidia -it --name tensorflow -p 8888:8888 -d kneazle/tf_od_api:part1
После этой команды я просто вижу что-то вроде этого (идентификатор контейнера?):
dc91f5b5e6759bac3dfe4e713406fd0e2a217637241a45d9a20d5cfc347d40d8
Затем я перехожу на localhost:8888 и запускаю свой блокнот Jupyter.
Теперь я хочу использовать мои локальные данные (более 10 ГБ) для обнаружения объектов, и для этого мне нужно использовать скрипт из API обнаружения объектов, который будет создавать и сохранять tfrecords для будущих задач. Поэтому мне нужно сохранить эти данные, но я не хочу загружать их каждый раз.
Я читал о томах и привязках, и попробовал решение, приведенное здесь: Как я могу использовать локальный файл в контейнере?
Команда, которую я использую для этого:
docker run -v /home/kneazle/data/KITTI:/data_host/KITTI kneazle/tf_od_api:part1
Но вывод этой команды:
[I 11:06:50.547 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 11:06:50.560 NotebookApp] All authentication is disabled. Anyone who can connect to this server will be able to run code.
[I 11:06:50.564 NotebookApp] Serving notebooks from local directory: /tensorflow/models/research/object_detection
[I 11:06:50.564 NotebookApp] The Jupyter Notebook is running at:
[I 11:06:50.564 NotebookApp] http://(a915e0cd0fd0 or 127.0.0.1):8888/
[I 11:06:50.564 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
И я не вижу данных в блокноте Jupyter, который я начал до или после.
Я не знаю, является ли это правильным решением для моего случая. Может быть, один из них ниже:
1- Я должен попытаться использовать Bind Mount. Должен ли я изменить файл Docker и заново создать образ? если да, то как? с ДОБАВИТЬ или КОПИРОВАТЬ или ОБЪЕМ?
2- Создайте новое изображение только для данных и попытайтесь достичь его. Будут ли 2 контейнера с двумя разными изображениями работать вместе?
3. Если этого варианта достаточно, то где моя ошибка?
Я также хотел бы получить несколько советов для начинающих учебников или документов, которые я должен прочитать. Как я уже сказал, я смотрю в Интернете, но я не мог найти последовательный способ делать вещи, не запутавшись.
РЕДАКТИРОВАТЬ: я изменил команду, которую я использовал так, что у меня есть одна команда сейчас. Но я все еще не вижу папку data_host в Jupyter
РЕДАКТИРОВАТЬ 2: Я думаю, что это нормально, не видеть папку data_host в Jupyter, поскольку он показывает мне только git ссылку, которую я клонировал. Так как я могу это увидеть? Является ли это возможным?
docker run --runtime=nvidia -it --name tensorflow -p 8888:8888 -v /home/kneazle/data/KITTI:/data_host/KITTI kneazle/tf_od_api:part1