搭建一套基于docker的开发训练环境
步骤如下:
O、安装ubuntu18.04及NVidia驱动,CUDA,CUDNN
1.安装Ubuntu系统
安装ubuntu过程,比较简单,可参考该链接:https://blog.csdn.net/baidu_36602427/article/details/86548203
2.显卡驱动安装
一、安装宿主机docker环境
参考该链接:NVidia-Docker2安装与常用命令
二、下载ubuntu18.04的docker基本镜像
dockerhub链接:https://hub.docker.com/_/ubuntu,在命令行使用docker pull ubuntu:18.04下载
三、安装sudo权限
apt-get update,如果不成功,需要更换源:/etc/apt/sources.list
源链接可参考该链接:ubuntu替换国内源(清华,阿里)
注意区分18.04和16.04,本人亲测阿里云可以正常更新,但清华源无法下载。替换方法,由于当前镜像下没有vi,vim,也无法安装通过sudo安装,可以先采用映射文件夹到docker的方式,拷贝一个准备好的sources.list进来。
四、镜像安装CUDA,CUDNN
由于Docker镜像无需安装NVidia驱动,只需安装CUDA和CUDNN,可参考:Nvidia驱动,CUDA,CUDNN安装流程
五、制作Docker镜像(安装软件包)
1、安装miniconda
先下载包,放入docker相应映射目录:Miniconda3-latest-Linux-x86_64
bash Miniconda3-latest-Linux-x86_64,安装过程中需要注意,有一个选项:是否需要每次启动conda?输入no,其它都默认yes就可以了
安装完后,需要设置环境变量: sudo vim ~/.bashrc
在文件最后加上:export PATH="/miniconda/bin":$PATH
source ~/.bashrc 使修改生效
进入python :command not support 需要先安装python:sudo apt-get install python
sudo update-alternatives --install /usr/bin/python3 python3 /miniconda3/bin/python3.8 1 设置python3.8为默认python位置
输入python,正常显示即说明配置成功
2、pytorch,torchvision
先下载好安装文件,然后使用pip安装
如果pip没有安装,需先安装pip:sudo apt-get insatll python-pip
然后依次安装torch,torchvision :https://download.pytorch.org/whl/torch_stable.html
pip install torch-1.6.0-cp38-cp38-manylinux1_x86_64.whl
安装过程中会同步安装feature(future-0.18.2-py3-none-any.whl),numpy(numpy-1.19.5-cp38-cp38-manylinux2010_x86_64.whl)
pip install torchvision-0.7.0-cp38-cp38-manylinux1_x86_64.whl
安装过程中会同步安装Pillow(Pillow-8.1.0-cp38-cp38-manylinux1_x86_64.whl)
3、使用pycharm连接docker
配置部分可参考该链接:使用docker来配置pycharm开发和训练环境
4、安装opencv
pip install opencv-python
确认安装成功方法:输入python: 进入python环境,>> import cv2
可能会有报错:ImportError:libGl1.so.1:cannot open shared object file:No such file or directory
解决方法:sudo apt-get install libgl1-mesa-glx
5、安装yacs,skimage
pip install yacs,scikit-image,安装scikit-image的同时会安装matplotlib, scipy
6、安装apex
git clone https://github.com/NVIDIA/apex
cd apex
python3 setup.py install
7、安装Caffe
参考该链接:Caffe环境安装
六、保存Docker镜像为文件
sudo docker commit -a "jimchen" containid imagename