[英]How to install a python package with all the dependencies into a Docker image?
我在Ubuntu 15.10中使用Docker容器為Pyspark jupyter / pyspark-notebook工作 。 我需要安裝具有所有依賴關系的folium並在容器中運行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)
我在/opt/conda
查找了conda環境(正如文檔中所述),但我的/opt
文件夾中沒有conda。 然后,我將miniconda3和folium安裝了所有依賴項作為普通的Python包(不涉及Docker)。
它不起作用。 當我運行圖像並嘗試使用import folium
導入包時,它找不到folium包:
ImportErrorTraceback (most recent call last)
<ipython-input-1-af6e4f19ef00> in <module>()
----> 1 import folium
ImportError: No module named 'folium'
所以問題可以歸結為兩個問題:
回答第一個問題conda環境在哪里? 我們只需要在console $ 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
我們可以修改Docker鏡像的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和ShanShan的意見
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.