本文部分內(nèi)容摘錄:http://www.cnblogs.com/xuxinkun/p/5983633.html
Docker安裝
Docker安裝過(guò)程需要使用root權(quán)限春寿, 主要有兩種安裝方式:
1、apt,yum方式安裝逝变,需要配置apt或yum的倉(cāng)庫(kù)
2、腳本安裝:curl安裝
阿里云加速器設(shè)置
針對(duì)1.10以上版本必逆,您可以通過(guò)修改daemon配置文件/etc/docker/daemon.json來(lái)使用加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://fird1mfg.mirror.aliyuncs.com“]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
其中[“https://fird1mfg.mirror.aliyuncs.com“]為阿里云申請(qǐng)的加速鏡像地址
NVIDIA-Docker安裝
Prerequisties:
? ? GNU/Linuxx86_64 with kernel version > 3.10
? ? Docker >= 1.9 (officialdocker-engine,docker-ceordocker-eeonly)
? ? NVIDIA GPU with Architecture > Fermi (2.1)
? ? NVIDIA drivers >= 340.29 with binarynvidia-modprobe(驅(qū)動(dòng)版本與CUDA計(jì)算能力相關(guān))
CUDA與NVIDIA driver安裝:
? ? 處理NVIDIA-Docker依賴項(xiàng)NVIDIA drivers >= 340.29 with binarynvidia-modprobe要求.
? ? 根據(jù)顯卡萍嬉,下載對(duì)應(yīng)版本的CUDA并進(jìn)行安裝.
NVIDIA-Docker安裝:
? ? #Install nvidia-docker and nvidia-docker-plugin
? ?#Test nvidia-smi
? ?先運(yùn)行插件 ?
? ?nohup nvidia-docker-plugin &
? ?再在容器里啟動(dòng)nvidia-smi
? ?nvidia-docker run –rm nvidia/cuda nvidia-smi
? ?備注:可能由于selinux原因,上述命令出現(xiàn)找不到路徑問題腰池,改成下面命令:
? ? nvidia-docker run -ti --rm --privileged=true nvidia/cuda nvidia-smi
? ? 或:
? ? ?docker run -ti `curl -s http://localhost:3476/v1.0/docker/cli` --rm --privileged=true nvidia/cuda nvidia-smi
Tensorflow鏡像使用
tensorflow gpu支持
tensorflow gpu in docker
docker可以通過(guò)提供gpu設(shè)備到容器中尾组。nvidia官方提供了nvidia-docker的一種方式,其用nvidia-docker的命令行代替了docker的命令行來(lái)使用GPU示弓。
nvidia-docker run -it -p8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu
這種方式對(duì)于docker侵入較多讳侨,因此nvidia還提供了一種nvidia-docker-plugin的方式。其使用流程如下:
首先在宿主機(jī)啟動(dòng)nvidia-docker-plugin:
[root@A01-R06-I184-22nvidia-docker]# ./nvidia-docker-plugin
./nvidia-docker-plugin |2016/10/1000:01:12Loading NVIDIA unified memory
./nvidia-docker-plugin |2016/10/1000:01:12Loading NVIDIA management library
./nvidia-docker-plugin |2016/10/1000:01:17Discovering GPU devices
./nvidia-docker-plugin |2016/10/1000:01:18Provisioning volumes at/var/lib/nvidia-docker/volumes
./nvidia-docker-plugin |2016/10/1000:01:18Serving plugin API at/run/docker/plugins
./nvidia-docker-plugin |2016/10/1000:01:18Serving remote API at localhost:3476
可以看到nvidia-docker-plugin監(jiān)聽了3486端口奏属。然后在宿主機(jī)上運(yùn)行docker run -ti curl -s http://localhost:3476/v1.0/docker/cli-p 8890:8888 gcr.io/tensorflow/tensorflow:latest-gpu /bin/bash命令以創(chuàng)建tensorflow的GPU容器跨跨。并可以在容器中驗(yàn)證是否能正常import tensorflow。
[root@A01-R06-I184-22~]# docker run -ti `curl -s http://localhost:3476/v1.0/docker/cli` -p 8890:8888 gcr.io/tensorflow/tensorflow:latest-gpu?
/bin/bashroot@7087e1f99062:/notebooks# python
Python2.7.6(default, Jun222015,17:58:13) [GCC4.8.2] on linux2
Type"help","copyright","credits"or"license"formore information.>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally>>>
nvidia-docker-plugin工作原理
是其提供了一個(gè)API
curl -s http://localhost:3476/v1.0/docker/cli
--volume-driver=nvidia-docker --volume=nvidia_driver_352.39:/usr/local/nvidia:ro--device=/dev/nvidiactl--device=/dev/nvidia-uvm --device=/dev/nvidia0--device=/dev/nvidia1 --device=/dev/nvidia2 --device=/dev/nvidia3