docker/nvidia-docker使用整理

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

docker save无空间时,解决方法
cd /mnt/md0 && docker save -o yuan_qwen.tar yuan:qwen
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最推荐打开方式

1.启动docker时命名

 docker run -it --gpus all -p 7772:8888 --shm-size 8G --name ISdebug2 -v /home/inspur/zhaobing:/workspace nvcr.io/nvidia/tensorflow:21.07-tf1-py3

这样即使关闭,
可以使用docker start ISdebug 开启docker(记住命名就不用每次都docker run了)
在用docker exec -it ISdebug bash进入
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启动时运行命令:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • Author:郭必扬Time:2019-05-02 Why Docker? 导师提供了一台高性能GPU机器,但是装...
    Stack_empty阅读 2,446评论 0 4
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,271评论 1 39
  • 教程|使用 Docker 安装深度学习环境 用 Docker 安装深度学习环境,轻量、方便!整个系统大小仅需2~3...
    叫我老村长阅读 1,637评论 0 1
  • “小凡,快回来啦,不要离河那么近”,身材微胖的妇女急切的对着河边六七岁的小男孩喊到。小男孩置若罔闻,仍是伸长了手在...
    夏晓笙阅读 232评论 0 0
  • 像路边摊上的灯光 我把它叫做火 火里熊熊燃烧着海市蜃楼 它照见我的蓬头垢面 也照亮你安静的站立 我讨厌你捡起闹钟 ...
    客衣覆雪阅读 214评论 0 9