首先普及一下基本概念:docker是一個系統鏡像管理器,可使用docker pull來下載網上已經打包好的特定環境的系統,這種系統稱爲image,將image拉下來以後,使用docker run進行運行,運行的系統實例稱爲容器(container)。由於docker能夠封裝任意環境的系統鏡像,因此避免了複雜的環境配置,學習一些基本的docker命令可使用咱們作實驗搭建環境事半功倍。
一些image須要nvidia-docker來pull,但nvidia-docker通用性差,因此咱們使用須要改成官方docker。
官方docker安裝參考地址
官方docker安裝後,使用先前須要配置環境,nvidia-docker替換爲官方dockerpython
export CUDA_SO=$(\ls /usr/lib/x86_64-linux-gnu/libcuda.* | xargs -I{} echo '-v {}:{}') export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}')
pull系統鏡像到本地linux
//下載theano系統鏡像 docker pull kaixhin/cuda-theano:7.5 //下載tensorflow系統鏡像 docker pull tensorflow/tensorflow:latest-gpu
建立一個名爲theano的容器,將其文件系統中/work與本機中的’pwd’/theano目錄進行關聯,8000-9000做爲對外開放的端口(儘可能少佔用點端口),參考git
docker run --name xxx-theano -v `pwd`/theano:/work -w /work -itd -p 8000-9000:8000-9000 $CUDA_SO $DEVICES kaixhin/cuda-theano:7.5 bash
查看本地鏡像與運行的容器github
docker images // watch installed image docker ps -a // watch image instances in docker
建立容器實例以後,還須要將容器與本地bash關聯才能進入容器,以下docker
//將bash與theano容器進行attach,並運行該bash docker exec –it theano bash
刪除本地鏡像或運行的容器shell
docker rm –vf theano //刪除名爲theano的容器 docker rm images_name //刪除名爲imags_name的容器
docker中安裝ssh:ubuntu
sudo apt-get install openssh-server
運行ssh/sshd或者用絕對路徑( 有可能在/var/run/ssh中沒有的話本身建立 )運行sshd
修改/etc/ssh/sshd_config,修改如下部分vim
port: 9020 //這個端口是運行docker run的時候留下的端口 Permitrootlogin: yes
再啓動sshwindows
sudo service ssh start //啓動ssh-server
以後就能夠在xterm或者xshell中登陸了,注意端口要設置爲sshd_config中留的端口號,如9020。
若是要使用戶同時具備sudo權限bash
sudo usermod –aG sudo username
(1) error: docker: Network timed out while trying to connect to xxx/images
You may want to check your internet connection or if you are behind a proxy.
solution:
sudo vim /etc/default/docker
a.在文件下方加入代理,由於默認爲國外image源
b.加入DNS域名,具體域名內容參見windows系統中「ipv4 dns server」中的IP
DOCKER_OPTS="--dns 10.248.2.5 --dns 10.239.27.228 --dns 172.17.6.9"
c. 在本地docker server中添加本身爲用戶
sudo usermod -aG docker $USER
(2) error: Tag latest not found in repository docker.io/kaixhin/cuda-theano
由於tag中沒有latest的名字,因此指名咱們要安裝的具體版本:
docker pull kaixhin/cuda-theano:7.5
參考
(3) error: docker: unauthorized: authentication required
image pull 到一半時會提示該信息,而後以失敗了結
solution:
查看系統時間信息時否正確,若是不正確在圖形化界面中修改成當前時間
date
(4) error: cannot import name raise_from when python import theano
solution: pip --proxy http://child-prc.intel.com:913 install -U six
(5) 宿主機關機後
若是宿主機關機重啓後,會發現docker ps –a中沒有運行的容器,這時須要
docker start container
但有時候這句命令會報錯:
dev/nvidia-uvm-tools: no such file or directory
Error: failed to start containers: caffe
解決
cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo ./deviceQuery