搭建一套基於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
