如何安装一个具有所有依赖的Python包到Docker镜像中?
我正在Ubuntu 15.10中使用Pyspark jupyter / pyspark-notebook的Docker容器。 我需要安装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
的包它没有findfolium包:
ImportErrorTraceback (most recent call last) <ipython-input-1-af6e4f19ef00> in <module>() ----> 1 import folium ImportError: No module named 'folium'
所以这个问题可以归结为两个问题:
- 集装箱的conda在哪里?
- 我如何将我需要的Python包安装到容器中?
在此先感谢您的帮助!
回答第一个问题conda环境在哪里? 我们只需要在控制台$ docker my_containers_name ls /opt/conda
执行。
第二个问题有两个select:
-
我们可以通过执行命令来打开容器控制台
$ docker exec -it my_containers_name /bin/bash
并像普通的conda软件包一样安装软件包
conda install --channel https://conda.anaconda.org/conda-forge folium
-
我们可以修改Docker镜像的Dockerfile或创build一个扩展前一个镜像的新镜像。 创build一个新的Dockerfile并添加行
FROM jupyter/minimal-notebook USER jovyan RUN conda install --quiet --yes --channel https://conda.anaconda.org/conda-forge folium && conda clean -tipsy
并build立我们的新形象。 如果我们想修改原来的Dockerfile,我们必须跳过第一行。
我创build我自己的Dockerfile分叉原始项目 。
感谢温暖的stream量和山珊的评论
- 是否有可能设置一个不同的主机端口在Docker容器的暴露端口?
- 允许Web服务器编辑泊坞窗容器内的文件
- 如何让这个工作? Dockerfile FROM {YourPrivateRepo.azurecr.io/some/repo}
- Docker在Parallels的虚拟Windows 10 Pro机器上
- 自动将etcd集群自configuration为Docker群集服务
- 更新Docker容器的Ruby bin文件夹的正确方法是什么?
- 如何在Docker-Swarm模式下完成负载平衡
- Elasticsearch Docker容器 – 数据量
- 不会压扁/压扁docker镜像会对registrycaching产生不利影响吗?