簡體   English   中英

如何將包含所有依賴項的python包安裝到Docker鏡像中?

[英]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'

所以問題可以歸結為兩個問題:

  1. 容器的conda在哪里?
  2. 如何將我需要的Python包安裝到容器中?

回答第一個問題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

感謝warmoverflowShanShan的意見

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM