Как установить пакет python со всеми зависимостями в образ Docker?
Я работаю в Ubuntu 15.10 с контейнером Docker для Pyspark jupyter / pyspark-ноутбук. Мне нужно установить Фолиум со всеми его зависимостями и запустить скрипт Pyspark в контейнер. Я успешно установил Docker, вытащил изображение и запустил его с помощью команды
docker run -d -p 8888:8888 -p 4040:4040 -v /home/$MYUSER/$MYPROJECT:/home/jovyan/work jupyter/pyspark-notebook
затем я выполняю пример кода без каких-либо проблем
import pyspark
sc = pyspark.SparkContext('local[*]')
# do something to prove it works
rdd = sc.parallelize(range(1000))
rdd.takeSample(False, 5)
Я искал среду conda в /opt/conda
(как сказано в документация) но в моем . Затем я установил miniconda3 и folium со всеми зависимостями как обычный пакет Python (без Docker).
это не работает. Когда я запускаю изображение и пытаюсь импортировать пакет с import folium
он не находит пакет Фолиум:
ImportErrorTraceback (most recent call last)
<ipython-input-1-af6e4f19ef00> in <module>()
----> 1 import folium
ImportError: No module named 'folium'
так что проблема может быть сведена к двум вопросам:
- где контейнер стадион conda?
- как я могу установить пакет Python, который мне нужен, в контейнер?
1 ответов
чтобы ответить на первый вопрос где находится среда conda? нам просто нужно выполнить в консоли $ docker my_containers_name ls /opt/conda
.
второй вопрос имеет два варианта:
-
мы можем открыть консоль контейнеров, выполнив команду
$ docker exec -it my_containers_name /bin/bash
и установите пакет как обычный пакет conda
conda install --channel https://conda.anaconda.org/conda-forge folium
-
мы можем изменить файл Dockerfile образа Docker или создать новый расширяет предыдущий. Чтобы создать новый Dockerfile и добавить строки
FROM jupyter/minimal-notebook USER jovyan RUN conda install --quiet --yes --channel https://conda.anaconda.org/conda-forge folium && conda clean -tipsy
и построить наш новый образ. Если мы хотим изменить исходный файл Dockerfile, мы должны пропустить первую строку.
Я создаю свою Dockerfile, порождая оригинальный проект.
спасибо warmoverflow и Шаньшань для ваших комментариев