nvidia-docker container run -p 8081:8081 -it --shm-size 32G --name=yexp -v /home/yusq/mnt/yusq:/home/yxp tensorflow/tensorflow:1.13.1-gpu-py3-jupyter /bin/bash
exit
docker start (刚刚的容器id)
nvidia-docker exec -it yexp /bin/bash (exec进去后容器不会自动退出)
---------------------------------------------------------------------------------------------------------------
sudo docker load < ./docker_image/moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20191210.tar
nvidia-docker container run -p 8084:8097 -it --shm-size 32G --name=yxp_torch130 -v /home/yusq/mnt/yusq:/home/yxp moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20200416 /bin/bash
sudo nvidia-docker exec -it duys2 /bin/bash/
解释:
sudo docker load -i ./docker_image/moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20191210.tar
导入这个主机上名为moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20191210的镜像
------------------------------------------------------------------
nvidia-docker container run -p 8084:8097 -it --shm-size 32G --name=yxp_torch130 -v /home/yusq/mnt/yusq:/home/yxp moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20200416 /bin/bash
-run是为这个镜像启动一个容器
-i和-t这两个参数的作用是,为该docker创建一个伪终端,这样就可以进入到容器的交互模式?(也就是直接进入到容器里面)后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。这个/bin/bash就表示启动容器后启动bash
-v见下面解释
这里注意端口号不能被占用,两个8082可以都改成8083,8084等等
------------------------------------------------------------------
sudo nvidia-docker exec -it duys2 /bin/bash/
见https://www.cnblogs.com/miracle-luna/p/11111852.html
docker/nvidia-docker使用整理:
-v用来把主机文件夹挂载到镜像中:
冒号前是主机路径,冒号后是容器路径,
例: -v /home/yusq/mnt/yusq:/home
把主机的/home/yusq/mnt/yusq挂载到容器的/home下
(十)Docker-V 详解 - sixinshuier - 博客园
-------------------------------------------------------------------------------------
常用命令:
docker ps #查看当前在运行的docker容器
docker ps -a #查看所有容器(包括停掉的)
docker stop <某个CONTAINER ID> #停止掉该CONTAINER ID的容器
docker rm <某个CONTAINER ID> #删除这个容器(不是镜像)
docker images #列出本机已有镜像
docker start <某个CONTAINER ID>或<NAMES> #启动一个或多个已经被停止的容器
docker stop <某个CONTAINER ID>或<NAMES> #停止一个运行中的容器
docker restart <某个CONTAINER ID>或<NAMES> #重启容器
---------------------------------------------------------------------------------------------------------------
服务器管理角度:
添加docker用户:
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
尝试远程连接docker:
sudo vim /lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
重启服务
sudo systemctl daemon-reload
sudo service docker restart
vscode通过跳板连接远程服务器docker容器_cxmomo的博客-CSDN博客
---------------------------------------------------------------------------------------------------------
ssh远程连接docker方式:
创建docker时把22端口映射出来,例如: -p 8901:22
在docker里安装ssh-server
apt update&&apt install -y --no-install-recommends openssh-server
apt-get install language-pack-zh-hans
设置密码
passwd root
修改ssh配置, 并开启服务:
vim /etc/ssh/sshd_config
service ssh start
docker的ssh已经搭好啦,可以直接ssh访问 , 比如说服务器的ip是192.168.0.5 ,docker映射端口是8901 , 那么就可以用
ssh -p 8901 root@192.168.0.5
---------------------------------------------------------------------------------------------------------
修改shm-size
第一步
// 找到要修改容器的 ID
docker ps -a;
- 本人docker用户对应的container ID如下
- 第二步
// 2f2162403489 为需要修改容器的 ID
docker inspect 2f2162403489 | grep Id
//输出显示需要的被修改的目录id
"Id": "2f2162403489c3cff8bfbe52b17ff0c9d64cc7ad2905e318fdb2d298b806ndslanld",
第三步
//最高权限
su
输入密码
// 进入对应ID目录
cd /var/lib/docker/containers/2f2162403489c3cff8bfbe52b17ff0c9d64cc7ad2905e318fdb2d298b8
ls
找到 hostconfig.json文件
第四步
// 停止docker服务
systemctl stop docker
//或者
service docker stop
- 第五步
// 修改 hostconfig.json
vi hostconfig.json
//找到shm,改成32G
"ShmSize": 34359738368,
直接修改你需要的内存,保存退出
验证
重启后进入docker(本机docker随服务器重启自动重启),进入用户docker使用“df”命令查看shm
-----------------------------------------------------------------------------------------------
pytorch的visdom
创建:
nvidia-docker container run -p 8084:8097 -it --name=yxp_torch130 -v /home/yusq/mnt/yusq:/home/yxp moredian_cuda10_cudnn7_mxnet_pytorch_by_wangd_v1_20200416 /bin/bash
docker中:
nohup python -m visdom.server &
-----------------------------------------------------------------------------------------------
报UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal
export LANG="en_US.UTF-8"
==================================================================
GPU docker环境搭建
新版不需要安装nvidia-docker
只需要一句:
apt-get install nvidia-container-runtime
然后生成容器加上一句 --gpus all
比如:
docker container run --privileged=true -p 10001:22 --gpus all -it --shm-size 8G --name=XXXX -v /XXXX:/XXX/ xxxxx /bin/bash