首先,pull官方的镜像,名字叫:continuumio/anaconda3

首先的首先,如果默认还是需要sudo运行docker命令,可以考虑把当前用户加入到docker组(usermod -aG docker $USER),然后重新登录一下就好了(备注:如果也在用tmux操作,需要重新开一个session,不然fork出来的user login总是保留着旧的状态。)

 

其次,这时候其实建议写一个dockerfile,不过因为偷懒,且不是永久性质的部署,所以选择了直接运行image。

目前用的命令是直接运行bash,然后再attach进去手动运行jupyter。docker run 对应的指令如下:

docker run -it -p 127.0.0.1:9999:8888 -v /home/user/container-notebook:/opt/notebook --name notebook continuumio/anaconda3

怕自己以后忘记这里说明一下,-p是端口映射,把容器内的8888端口映射到本机的9999。注意:如果不加127.0.0.1默认是bind 0.0.0.0

以及,-v 是目录(volume)映射,把本机的container-notebook挂到了容器内的/opt/notebook

--name 是方便以后操作加上的,不加的话会随机生成一个名字,不好认。

至于command,因为默认会运行bash,所以image name后面就省略command部分了。

 

至于为什么需要先进shell,主要是为了设置jupyter的密码。因为不设置密码的话登录要用url token,太麻烦了,而用参数明文指定密码也不太好,只好手动操作了。

设置密码的指令很简单:jupyter notebook password 即可。注意:密码保存在~/.jupyter下的一个json config里面,非明文,仅保存了hash值。如果忘了只能手动再设置一遍。

 

之后在shell里面运行notebook的命令也很简单:jupyter notebook --notebook-dir=/opt/notebook --ip=* --no-browser --allow-root 即可。

这里也说明一下相关的细节:因为官方的docker image只有root用户,所以不加allow-root运行不了。其他参数都好理解。

 

最后,因为运行了上面这条jupyter的指令后,stdin就被占用了,这时候ctrl+c不是退出container,而是终止jupyter。官方的默认退出container的操作是快捷键ctrl+p然后ctrl+q,这样可以保持容器内的前台任务继续运行。

 

其他补充

因为google了很多相关的东西,虽然不一定跟部署jupyter有关,不过还是有用也值得记录一下的。

 

1. 停止 docker container 一般优先用stop,kill是发送SIGKILL强制退出,没有提前发送SIGTERM

2. 想要在docker里面用tmux的前提是有一个可以安装tmux的环境(比如基于某个发行版的docker image)

3. docker pull下来的image默认存储在/var/lib/docker

4. docker run 的时候加上-d参数可以把stdout的输出转移到后台,需要查看的话用docker container logs

 

 

ref:

官方镜像(内附简要使用说明):https://hub.docker.com/r/continuumio/anaconda3

https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

docker kill 和 stop 有什么区别》http://dockone.io/question/158

关于Docker目录挂载的总结 - iVictor - 博客园》https://www.cnblogs.com/ivictor/p/4834864.html

https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine

后台运行 | Docker 从入门到实践》https://vuepress.mirror.docker-practice.com/container/daemon.html

端口映射:https://docs.docker.com/config/containers/container-networking/

https://docs.docker.com/engine/reference/commandline/attach/

目录挂载:https://docs.docker.com/storage/volumes/

 

posted on 2020-06-08 22:58  期命周生  阅读(596)  评论(0编辑  收藏  举报