当我使用 docker 启动 spark-notebook 并创建一个新工作表时。下次我启动它时,工作表不在那里。
这是命令:
docker run -v /Users/pkerp/projects/chairliftplot/:/mnt -p 9000:9000 andypetrella/spark-notebook:0.2.0-spark-1.2.0-hadoop-1.0.4
这是警告/信息:
15/02/09 08:38:12 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://Remote@127.0.0.1:41602]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: /127.0.0.1:41602
15/02/09 08:38:12 INFO remote.RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://NotebookServer/system/remote-watcher#-457307005] to Actor[akka://NotebookServer/deadLetters] was not delivered. [8] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
这是配置错误还是其他问题?
编辑:
所以这个问题有几个方面。
- 当使用 ctrl-c 关闭正在运行的 docker 容器时,它实际上仍然存在。当我使用上面的命令重新运行它时,它会启动一个单独的新容器,该容器没有新创建的笔记本。
这可以通过查看正在运行的容器列表来缓解,使用docker ps
找到正在运行的容器并使用 附加到它docker attach process_id
。数据仍将存在。
- 使用已安装的卷来存储笔记本会导致权限问题。容器内挂载的目录只有所有者写权限,所有者为用户1000。spark-notebook 作为用户守护进程(用户 id 1)运行。
这是github 上有关此问题的长线程,但没有明确的解决方案。