预先安装:
Ubuntu14.04,SSH,GIT,CUDA-8.0
一、安装docker
安装最新版
// 1. 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
// 2. 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
// 3. 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
// 4. 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
安装指定版本
// 1. 查找Docker-CE的版本:
apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
// 2. 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)
sudo apt-get -y install docker-ce=[VERSION]
输入:$sudo docker ps 查看
去掉 sudo: 输入:$sudo usermod -aG docker your_username
二、安装nvidia-docker
Prerequisties
GNU/Linux x86_64 with kernel version > 3.10
Docker >= 1.9 (official docker-engine, docker-ce or docker-ee only)
NVIDIA GPU with Architecture > Fermi (2.1)
NVIDIA drivers >= 340.29 with binary nvidia-modprobe (驱动版本与CUDA计算能力相关)CUDA与NVIDIA driver安装
处理NVIDIA-Docker依赖项 NVIDIA drivers >= 340.29 with binary nvidia-modprobe 要求.
根据显卡,下载对应版本的CUDA并进行安装.NVIDIA-Docker安装
#Install nvidia-docker and nvidia-docker-plugin
- wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
- sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
#Test nvidia-smi
- sudo nvidia-docker run nvidia/cuda nvidia-smi
- 如果报error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/f9/f975c50357489..... net/http: TLS handshake timeout 错误,需要在/etc/default/docker 文件添加国内镜像源,文件末行添加:
#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp" DOCKER_OPTS="--insecure-registry docker-reg.emotibot.com.cn:55688" #DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io" #DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
或者命令行输入命令:echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker
重启 docker 生效。
$service docker restart
三、安装docker-compose和nvidia-docker-compose
首先执行sudo -i,提示输入用户密码,输入密码后进入超级用户(root)模式,
1. Docker Compose
超级有用的实用程序,允许你在文件中存储 docker run 配置,并更轻松地管理应用程序状态。尽管它的设计目的是组合多个 docker 容器,但 docker compose 在你只有一个服务的时候依然非常有用。这里有一个稳定版本(https://github.com/docker/compose/releases):
1.首先执行sudo -i,提示输入用户密码,输入密码后进入超级用户(root)模式.
2.curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
3.sudo chmod +x /usr/local/bin/docker-compose
2. Nvidia Docker Compose
不幸的是,Docker Compose 并不知道 Nvidia Docker 的存在。幸运的是,有一个解决方法:有一个小的 Python 脚本,可以用 nvidia-docker 驱动程序生成配置。通过 pip 安装 Nvidia Docker Compose:
首先安装pip:
sudo wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
tar -vxf setuptools-1.4.2.tar.gz
cd setuptools-1.4.2
sudo python2.7 setup.py install
easy_install-2.7 pip
或者:
sudo apt-get install python2.7 python2.7-dev //很多pip安装的包都需要libssl和libevent编译环境 sudo apt-get install build-essential libssl-dev libevent-dev libjpeg-dev libxml2-dev libxslt-dev sudo apt-get install python-pip
sudo pip install nvidia-docker-compose
现在你可以使用 nvidia-docker-compose 命令,而不是 docker-compose 了。
替代选择
如果你不想使用 nvidia-docker-compose,你可以手动传递音量驱动程序,只需把这些选项添加到 docker-compose.yml:
#Yournvidia driver version here
volumes:
nvidia_driver_375.26:
external:true
...
volumes:
-nvidia_driver_375.26:/usr/local/nvidia:ro
-
如果运行镜像(docker logs 348322e1a639)报如下错误:
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0327 10:49:48.860283 1 common.cpp:152] Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime version
解决办法:
$docker volume rm -f nvidia_driver_375.26
$ nvidia-docker run nvidia/cuda:8.0-devel nvidia-smi
关于Git 项目时,项目的子目录中含有其他项目的code,需要先Git clone *****.git ,cd 到主目录,然后输入:
$git submodule update --init --recursive