Docker-可以在本地引用Docker容器中的文件吗?

时间:2019-04-16 08:23:04

标签: docker apache-spark livy

我有一个运行在Docker容器中的Spark集群(使用我自己创建的映像)。一切正常。

我现在要使用Apache Livy,并且根据它说的文档,我需要放置几个环境变量: https://livy.incubator.apache.org/get-started/

export SPARK_HOME=/usr/lib/spark
export HADOOP_CONF_DIR=/etc/hadoop/conf

我的问题是,由于Spark在Docker中运行而不是在本地安装,因此我必须在导出中引用这两个目录有哪些选项。

这实际上是我面临的常见问题,因此任何有关最佳做法的帮助都将真正帮助您。

谢谢。

2 个答案:

答案 0 :(得分:0)

最简单的选择是将livy和spark一起安装在运行spark的同一个docker容器中,并在外部暴露所需的端口。

一个更好的解决方案是为livy创建一个单独的容器(使用/usr/lib/spark/etc/hadoop/conf中使用的相同配置文件)并使用docker-network连接。并且只将livy端口暴露在外面。

答案 1 :(得分:0)

您可以创建一个卷。卷是您的计算机和docker之间的共享文件夹。

docker run -v /home/userName/Docker/spark:/usr/lib/spark \
           -v /home/userName/Docker/hadoop:/etc/hadoop/ \
           ...

然后,您可以创建环境变量到路径。 export SPARK_HOME=/home/userName/Docker/sparkexport HADOOP_CONF_DIR=/home/userName/Docker/hadoop/conf应该适用于此示例。