在不使用内置图像的情况下在 docker 中设置 zeppelin

Setup zeppelin in docker without using built-in image

我需要在 docker 中安装 zeppelin 而不使用内置映像,因为它的大小很大(以 gb 为单位)。我想从二进制文件安装 zeppelin,例如 zeppelin-0.8.2-bin-netinst.tgz (Only spark interpreter ~ 318 mb)

我的 Dockerfile

FROM openjdk:8
RUN wget -O /tmp/zeppelin-0.8.2-bin-netinst.tgz https://mirror.downloadvn.com/apache/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-netinst.tgz
RUN tar -xvzf /tmp/zeppelin-0.8.2-bin-netinst.tgz -C /opt && rm /tmp/zeppelin-0.8.2-bin-netinst.tgz
EXPOSE 8080

我构建 docker 图像和 运行 容器

docker build -t test:1.0 .
docker run -p 8080:8080 -it test:1.0 /bin/bash

并手动启动 zeppelin

/opt/zeppelin-0.8.2-bin-netinst/bin/zeppelin-daemon.sh start

我收到了结果

Zeppelin start                                             [  OK  ]

但是当我从浏览器 http://localhost:8080/ 访问 zeppelin 时,我收到:

This page isn’t working
localhost didn’t send any data.
ERR_EMPTY_RESPONSE

我尝试了 运行 命令 bin/zeppelin.sh 但没有出现。 我哪里错了?

我用 docker ps 命令检查了我的容器,结果 sas:

5d37f4a18a53        test:1.0            "/bin/bash"         27 minutes ago      Up 27 minutes       0.0.0.0:8080->8080/tcp   brave_bardeen

如果我从 docker 主机远程登录:telnet localhost 8080 并且它有效。为什么我无法从浏览器访问 zeppelin?

感谢和问候

我发现了一些有用的东西 post:

我们需要设置 ZEPPELIN_ADDR=0.0.0.0,现在我可以从浏览器 localhost

访问 zeppelin
docker run -p 8080:8080 -e ZEPPELIN_ADDR=0.0.0.0 -it test:1.0 /bin/bash