[docker]的使用

1 docker的安裝

首先普及一下基本概念: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 {}:{}')

2 docker的使用

2.1 docker經常使用命令

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的容器

2.2 局域網內用戶直接登陸docker中某容器

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

3.1 使用過程遇到的問題

(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
相關文章
相關標籤/搜索