本文部分內(nèi)容摘錄:http://www.cnblogs.com/xuxinkun/p/5983633.html
Docker安裝
Docker安裝過程需要使用root權(quán)限, 主要有兩種安裝方式:
1、apt,yum方式安裝,需要配置apt或yum的倉庫
2、腳本安裝:curl安裝
阿里云加速器設(shè)置
針對1.10以上版本,您可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:
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“]為阿里云申請的加速鏡像地址
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ū)動版本與CUDA計算能力相關(guān))
CUDA與NVIDIA driver安裝:
? ? 處理NVIDIA-Docker依賴項NVIDIA drivers >= 340.29 with binarynvidia-modprobe要求.
? ? 根據(jù)顯卡,下載對應(yīng)版本的CUDA并進行安裝.
NVIDIA-Docker安裝:
? ? #Install nvidia-docker and nvidia-docker-plugin
? ?#Test nvidia-smi
? ?先運行插件 ?
? ?nohup nvidia-docker-plugin &
? ?再在容器里啟動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可以通過提供gpu設(shè)備到容器中。nvidia官方提供了nvidia-docker的一種方式,其用nvidia-docker的命令行代替了docker的命令行來使用GPU。
nvidia-docker run -it -p8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu
這種方式對于docker侵入較多,因此nvidia還提供了一種nvidia-docker-plugin的方式。其使用流程如下:
首先在宿主機啟動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端口。然后在宿主機上運行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容器。并可以在容器中驗證是否能正常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工作原理
是其提供了一個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