zoukankan      html  css  js  c++  java
  • docker 配置 anaconda + jupyter notebook 纪要

    首先,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/

  • 相关阅读:
    Idea快捷键---根据自己使用情况持续更新
    JVM 性能监控 工具
    redis ---RDB 和 AOF 持久策略对比
    数组、链表等常用数据结构和集合浅解(java)
    关于界面刷新嵌套展示(form标签 target 属性)问题
    对象是否存在的判定方法
    数据库大量插入数据的sql 优化
    Java集合之LinkedList
    Java集合类之ArrayList
    Java并发程序基础
  • 原文地址:https://www.cnblogs.com/pyzh/p/docker-anaconda-jupyter-notebook-config-summary.html
Copyright © 2011-2022 走看看