Tensorflow 1.14+: образ docker не работает должным образом с docker-compose - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь проверить мои настройки, используя docker и tenorflow. Я использую официальное изображение Tensorflow tenenflow / tenorflow: 1.15.0rc2-gpu-py3

Мой проект имеет минимальную структуру:

project/
    Dockerfile
    docker-compose.yml
    jupyter/
        README.md

У меня есть следующееDockerfile:

# from official image
FROM tensorflow/tensorflow:1.15.0rc2-gpu-py3-jupyter
# add my notebooks so they are a part of the container
ADD ./jupyter /tf/notebooks


# copy-paste from tf github dockerfile in attempt to troubleshoot
# https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/dockerfiles/dockerfiles/gpu-jupyter.Dockerfile
WORKDIR /tf
RUN which jupyter
CMD ["jupyter-notebook --notebook-dir=/tf/notebooks --ip 0.0.0.0 --no-browser --allow-root"]

и docker-compose.yml

version: '3'

services:
  tf:
    image: tensorflow/tensorflow:1.15.0rc2-gpu-py3-jupyter

    # mount host system volume to save updates from container
    volumes:
      - jupyter:/tf/notebooks

    ports:
      - '8888:8888'

    # added as part of troubleshooting
    build:
      context: .
      dockerfile: Dockerfile


volumes:
  jupyter:

, работающие docker-compose build и docker-compose up успешно (если CMD в Dockerfile закомментирован), но просто выходит. Из docker hub репозитория я думал, что добавление тома автоматически запустит ноутбук.

Попытка запустить jupyter-notebook или jupyter notebook не удалась.

Мысли включеныкак исправить?

1 Ответ

1 голос
/ 17 октября 2019

Если вы хотите создать собственное изображение из официального, добавив каталог для ноутбука, то свойство image в docker-compose должно быть именем вашего локального изображения, а не тензорного потока / тензорного потока: 1.15.0rc2-gpu-py3-jupyter. В этом случае все, что вам нужно, это следующий Dockerfile:

FROM tensorflow/tensorflow:1.15.0rc2-gpu-py3-jupyter
ADD ./jupyter /tf/notebooks

В этом случае файл docker-compose.yaml должен выглядеть следующим образом:

version: '3'
services:
  tf:
    image: tensorflow

    # mount host system volume to save updates from container
    volumes:
      - jupyter:/tf/notebooks

    ports:
      - '8888:8888'

    # added as part of troubleshooting
    build:
      context: .
      dockerfile: Dockerfile


volumes:
  jupyter:

Обратите внимание, что изображениеis tenorflow.

Однако, нет необходимости использовать пользовательский Dockerfile. Просто используйте следующий файл docker-compose.yaml:

version: '3'
services:
  tf:
    image: tensorflow/tensorflow:1.15.0rc2-gpu-py3-jupyter

    # mount host system volume to save updates from container
    volumes:
      - ./jupyter:/tf/notebooks:Z

    ports:
      - '8888:8888'

Он будет напрямую отображать вашу локальную директорию jupyter в контейнер и будет использовать официальное изображение без изменений.

Обратите внимание, что этоможет не работать должным образом в Windows из-за проблем с отображением каталогов хоста.

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