有一些需要从头编译的库,直接利用conda安装会出现cuda编译不通过,因此开始入坑docker。知乎排版太难了,以下只做三个问题的摘录,
- 深度学习使用Docker
- docker容器内无法使用Xserver可视化
- docker容器与pycharm连接
推荐看原文如下,原文持续更新:
Keep Young, Reduce Constraints; Just for Fun!fenggangliu.top![de0de0f3bfee77fa84648c1c6f8a3205.png](https://i-blog.csdnimg.cn/blog_migrate/4d3ce22486f4ada02e608d0b2a440374.jpeg)
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费),EE 即企业版,强调安全,付费使用。Docker CE 分为 stable, test, 和 nightly 三个更新频道。每六个月发布一个 stable 版本 (18.09, 19.03, 19.09…)。源自知乎
深度学习使用Docker
升级到Docker19.03+
docker升级到19.03以后,nvidia将提供原生的显卡支持,只需要安装nvidia-container-toolkit工具包即可,不再像使用nvidia-docker/2那样复杂配置. 源自网页
- Docker19.03安装可见: https://docs.docker.com/engine/install/ubuntu/
直接去网址下载 containerd.io, docker-ce-cli, docker-ce19.03, 依次dpkg安装 - 然后按照https://github.com/NVIDIA/nvidia-docker 安装nvidia-container-toolkit, 简简单单如下:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
运行
docker pull pytorch/pytorch:1.2-cuda10.0-cudnn7-devel
docker run --gpus all -v /home/liufg/folder:/workspace pytorch/pytorch:1.2-cuda10.0-cudnn7-devel
镜像查询网址
- 阿里云: https://cr.console.aliyun.com/cn-hangzhou/instances/images
- docker hub: https://hub.docker.com/
- 直接
docker search
- 阿里云上使用 Nvidia NGC https://docs.nvidia.com/ngc.cn/ngc-alibaba-setup-guide-cn/a1-0.html#a1-0
docker容器内无法使用Xserver
即cv2.imshow(), matplotlib都无法可视化, 解决方案可见:https://blog.csdn.net/BigData_Mining/article/details/103559929. 以下做摘录, 总的来说就是显示到本地显示器.
- 首先,在主系统里运行以下,就是你host主机。
apt-get install x11-xserver-utils
xhost +
xhost +的作用是开放权限,允许所有用户,当然包括docker,访问X11 的显示接口
如果xhost +不能执行,报错:xhost : unable to open display “”
可以输入命令export DISPLAY=:0执行一下
- 在启动docker容器时,添加选项如下:
-v /tmp/.X11-unix:/tmp/.X11-unix #共享本地unix端口
-e DISPLAY=unix$DISPLAY #修改环境变量DISPLAY
-e GDK_SCALE #我觉得这两个是与显示效果相关的环境变量,没有细究
-e GDK_DPI_SCALE
最终的启动命令就会长类似这样
docker run -it
-- gpus all
-v /your-work:/workspace
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=unix$DISPLAY
-e GDK_SCALE
-e GDK_DPI_SCALE
--name 名称
镜像名称
这样启动后的容器,运行有图形界面的程序就可以自由显示,和在本地显示一样了。
- 每次重新开机,需要在本机操作一次
xhost +
, 以打开权限。
docker容器与pycharm连接
pycharm连接docker容器, 用来调试代码. 以下记录容器已经建好, 然后pycharm连接.
其实也可以pycharm连接镜像, 新建一个容器,然后在此容器中安装自己的库.
远程连接和本地连接相同, 都是通过ssh.
docker容器开启ssh端口
参考: https://blog.csdn.net/weixin_41666001/article/details/101430353
- 容器开启时应设定端口映射, 比如:
docker run -it -p 8010:22 <image>
将容器22端口映射到host主机的8010, 注意这里22号端口是ssh的默认端口, 8010可以随意指定host的空闲端口. (若有误请指正)
- 容器中安装ssh (apt国内镜像加速要做好
apt-get install openssh-server
- 设置root密码
passwd root
- 修改配置文件
vim /etc/ssh/sshd_config
修改内容如下:
# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
PermitRootLogin yes #允许root用户使用ssh登录
- 重启ssh
service ssh restart
# 或者
/etc/init.d/ssh restart
docker port或者docker ps -a 命令可以让我们快捷地查看端口的绑定情况
pycharm添加远程编译器
直接添加SSH环境.
- 本机地址是127.0.0.1, 端口号填之前的8010
- python解释器地址:
/opt/conda/bin/python3.6