美文网首页docker
docker/nvidia-docker使用整理

docker/nvidia-docker使用整理

作者: 赵小闹闹 | 来源:发表于2019-06-05 18:03 被阅读0次

    1.打开nvidia-docker

    sudo nvidia-docker run -it -p 7777:8888 tensorflow/tensorflow:latest-gpu
    

    2.docker内打开jupyter notebook

    
    jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
    

    第一次浏览器打开jupyter notebook

    172.28.9.220:7777/tree?token=9Llv9cCqyNv1Vf7g
    

    172.28.9.220是服务器的ip
    7777是开docker是映射号
    token是docker开jupyter时显示的token
    之后直接使用开启即可

    172.28.9.220:7777
    

    3.查看已安装docker

    sudo docker images
    

    查看正在运行的容器

    sudo docker ps
    

    容器做完修改必须保存

    sudo dcoker commit 容器id 容器名
    sudo docker commit f55f8ba11f95 tensorflow/tensorflow:latest-gpu
    

    停止某容器

    sudo docker stop 容器id
    

    4.docker配置jupyter notebook

    • 创建存放jupyter notebook的文件夹

    mkdir [存放notebook的文件夹]
    mkdir jupyter

    此时相当于在主机的/home/下创建了jupyter文件夹

    3.2 如果容器内没有jupyter notebook,需要安装一下

    pip install jupyter notebook

    3.3 配置jupyter notebook

    jupyter notebook --generate-config
    vim ~/.jupyter/jupyter-notebook-config.py
    1
    2
    修改如下内容

    # 允许root启动
    c.NotebookApp.allow_root = True
    # 允许远程访问
    c.NotebookApp.ip = '0.0.0.0'
    # 设置notebook文件夹
    c.NotebookApp.notebook_dir = '/jupyter'
    # 设置静态token,这样就不用每次换token了,另一种方法是设置密码password
    c.NotebookApp.token = '[自定义token]'
    

    3.4 开启notebook

    jupyter notebook &
    按Ctrl+P+Q退出容器但不关闭

    5 docker运行脚本出现错误

    ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm). 
    

    解决方案

    sudo nvidia-docker run --ipc=host -it -p 7790:8888 liu
    

    启动docker时候加上参数--ipc=host

    6 向容器里传文件

    sudo docker cp /home/user/zhaobing/docker/tensorflow-mnist/mnist_tfserving_model   bafaaaa573b4:/
    

    7 在多个shell中启动同一个docker

    启动docker后,在新的窗口:

    docker exec -it <container_id> bash
    

    8 docker 挂载卷

     nvidia-docker run -it -v /home/user/workspace/liu/remote_workspace:/workspace/liu/remote_workspace retinaface
    

    使用nvidia-docker run 而不是docker run
    使用docker run 跑代码发生错误
    挂载卷:前后为本地路径与docker内路径,要注意需要哪一级挂到哪一级,防止挂到子目录无法使用上级目录的情况。

    9 docker 镜像的导出与导入

    1.镜像保存
    先使用docker images查询docker id


    image.png

    使用docker save命令保存为.tar文件

    docker save 8ca8d > retinaface.tar
    

    2.镜像导入

    docker load < retinaface.tar
    

    导入后使用下述命令给images 命名

    docker tag 8ca8dfe44635 retinaface
    

    10.镜像与容器的删除

    查询镜像

    docker ps
    

    删除镜像

    docker rmi
    

    查询容器

    docker images
    

    删除容器

    docker rm
    

    理论上要先删除容器,才能删除镜像。

    11. 容器开启无gpu

    使用docker run命令开启docker 使用nvidai-smi 发现无GPU信息,可以做如下调整。

    sudo docker run -it --gpus all -p 7777:8888 pytorch-zhao
    

    加上--gpus all

    12镜像删除

    删除docker image 中的镜像

    sudo docker image rm 'REPOSITORY:TAG'
    #镜像名:tagm 默认为latest
    

    13docker重命名

    docker tag IMAGEID(镜像id) REPOSITORY:TAG
    #新的image名和tag
    

    14删除镜像名或者tag为none的镜像

    对于REPOSITORY和TAG均为none的镜像


    image.png
    docker image prune
    

    对于tag为none的镜像


    image.png

    先使用docker tag命令改名,将tag重命名为latest,再用docker image rm删除

    15.docker启动挂载路径

    sudo docker run -it   -v /data/docker/lib:/workspace pytorch:latest
    sudo docker run -it --gpus all -p 7777:8888   -v /data/docker/lib:/workspace pytorch:latest
    

    15.5docker启动时规定内存

    使用mmdetection等大型项目时可能出现报错内存过小无法训练的情况,可以指定--shm-size 8G

    sudo docker run -it --gpus all -p 7775:8888 --shm-size 8G -v /home/zhaobing:/workspace mmdetection:latest
    

    16. pytorch py2版本镜像地址

    https://hub.docker.com/r/vanessa/pytorch-dev/tags/?page=1&ordering=last_updated

    17 docker最推荐打开方式

    docker run用于最开始开启一个镜像,开启后不要关闭
    通过docker attach 可以同步进入docker run开启的镜像界面,缺点是多人开启时均为同步界面,造成混乱,同时关闭该镜像,docker run开启的镜像也会被关闭
    推荐通过docker exec命令进入镜像,没有docker attach的缺点

    docker exec -it  wizardly_chaplygin bash
    

    -it后为docker ps 查看的开启的docker name

    18 Nvidia释放显存方法

    当出现爆显存,CUDA_ERROR_OUT_OF_MEMORY

    sudo kill -9 PID
    

    可杀死相应进程,同时在计算过程给脚本规定使用的GPU可降低tensorflow出现浪费GPU现存问题

    CUDA_VISIBLE_DEVICES=x
    

    19. ps u pid

    查看某个pid启动时运行命令

    相关文章

      网友评论

        本文标题:docker/nvidia-docker使用整理

        本文链接:https://www.haomeiwen.com/subject/xavrxctx.html