https://amoshyc.github.io/blog/caffe-wu-tong-kai-shi-shi-yong-docker.html
Introduction
Caffe 是當紅的 Deep Learning 框架,但他的安裝是極為複雜,非常容易失敗。我們可以改用 Caffe 官方提供的 docker image,把一切都包好了,讓我們可以在 docker 中使用 Caffe,不擔心污染到 host OS,並輕易地刪除或創建 Caffe 的環境。
在本文我們將使用 cpu 版本的 caffe docker image,該 image 已內建 caffe, pycaffe (python 2.7), numpy, scipy, 等。另外我還希望使用 Jupyter, matplotlib 等。本文會說明如何無痛開始使用 Caffe,旨在快速開始使用 caffe 而不被那些複雜的安裝嚇退。但如果你的程式或產品需要 gpu 的話,這篇文對你就沒什麼幫助,請還是乖乖安裝或用 nvidia-docker。
本文是在 Fedora 25 上測試,你要先會 docker 與 linux 的基本操作才看得懂這篇文。我的 username 是 amoshyc,看到時請自動將之轉為你的 username。以下所有 docker 的指令預設情況下,都必需使用 sudo 來執行。
建構容器
docker run -d -p 8888:8888 -v /home/amoshyc/workspace:/workspace:z --name caffe -i bvlc/caffe:cpu bash
這指令會創造出一個名為 caffe 的容器在背景執行。若 local 沒有 bvlc/caffe:cpu 的 image,這指令會去下載,這個 image 解壓後有 1.5 GB 大,請小心。
-i 代表互動模式。 -d 代表一開始容器是在背景執行。 --name caffe 設定容器的名稱。 -p 8888:8888 將 port 8888 打開,這是 Jupyter 的預設 port。 -v /home/amoshyc/workspace:/workspace:z 讓容器的 /workspace 對應到 host OS 的 ~/workspace。:z 是為了防止 Fedora SE Linux 警告所須加的參數(host OS 不是 Fedora 不用加)。冒號之前是 host OS 的資料夾,之後是容器中的資料夾,都必需使用絕對路徑。
容器操作
進入離開容器:
docker exec -it caffe bash (在容器中)exit
啟動關閉容器:
docker start caffe docker stop caffe
刪除容器:
docker rm caffe
列出所有容器:
docker ps -a
在進入容器後,就可以使用各種 caffe 的指令了。另外,caffe 的各個工具已經被加到 PATH 中,可以執行:
caffe --version
來測試。
此外,我也建議先去跑跑 /opt/caffe/examples/mnist/ 底下的程式,細節請參該目錄底下的 readme.md 或者你也可以在 Github 上看到該 文檔 的內容。MNIST 相當於 Machine Learning 的 Hello World,這資料夾底下是放 Lenet,一個著名的用來解 MNIST 的 CNN。另外也建議搭配著 /opt/caffe/examples/01-learning-lenet.ipynb 一起看,Github 的連結在 這裡 。我個人認為這是要搞懂 caffe 相當好的 example。
在容器中,clear 指令是不起作用的,不過你只要:
export TERM=linux
之後在同一個 shell 底下,clear 指令就會正常運作了。
在容器中,如果想透過 apt 安裝套件,請記得先:
apt update
安裝 Jupyter
我們想要在容器中執行 Jupyter 並在 host OS 的瀏覽器中使用。這相當於從外部網路連到一個伺服器上的 Jupyter,是一個相對危險的形為,所以得進行一些設定。
通用設定檔
如果你覺得設定 Jupyter 很麻煩,我這裡提供一個 設定檔,可以讓你不用手動設定。首先你得安裝 Jupyter:
pip install jupyter
下載設定檔到 /root/.jupyter/:
wget https://gist.githubusercontent.com/amoshyc/9c6f3939aec47e3ff41809931d1f8f64/raw/8224dc93e3a11f9317e4bc41d863ca466681ecd6/jupyter_notebook_config.py -P /root/.jupyter/
然後在你想要的工作資料夾(通常是 /workspace):
jupyter notebook
之後開啟 host OS 的 http://localhost:8888/,登入的密碼是 amoshyc。
自定設定檔
產生一個你之後從 host OS 中登入 Jupyter 所需的密碼,好記好打就可以了。啟動 python:
>>> from notebook.auth import passwd >>> passwd()
輸入你想要的密碼並複製產生的字串(不含那兩個單引號)。
產生設定檔:
jupyter notebook --generate-config
使用 vim 編輯 /root/.jupyter/jupyter_notebook_config.py,請在該檔案加入:
c.NotebookApp.ip = '*' c.NotebookApp.password = '<your hashed password>' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888
<your hashed password> 填你複製的那個字串。存檔後,你就可以執行:
jupyter notebook
之後在 host OS 的 http://localhost:8888/ 登入並使用 Jupyter 了。
其它常用套件安裝
numpy, scipy 已經預裝好了。這裡我們安裝用來畫圖的 Matplotlib,圖片操作的 Pillow 及 caffe 內建畫出網路 draw_net.py 所需的 graphviz:
apt update apt install graphviz pip install matplotlib pillow
==========================================================================================================
http://yuenshome.cn/?p=3164
最近在 Ubuntu 上安裝 Caffe 總是有各種各樣的問題,盡管因為系統版本的問題沒有安裝 CUDA ,少了不少麻煩,但在 make 的時候總是缺這個.o文件或者少那個.h文件。Docker 常用命令請查看參考部分的第一個。
本文目錄
0. 安裝 Docker
在 Ubuntu 上安裝 Docker 的命令十分簡單:
|
1
|
sudo apt-get install docker.io
|
1. 獲取 Caffe 的 Docker 鏡像
恰巧有群友說到 Docker,以前看過,現在還依稀記得。現在提供兩種方法來獲取 Docker 鏡像,大家二選一(1.1 或者 1.2)即可。考慮到有的同學沒有 git 下 caffe 的源碼,我們這里推薦第二種方法(跳過1.1,開始1.2 搜索並下載 Caffe 的 Docker 鏡像)。
1.1 通過 Dockerfile 來創建 Docker 鏡像
發現 Caffe 從 Github 上下載下來的壓縮包中,根目錄就有一個名為 Docker 的文件夾,可以進去后選擇 CPU 文件夾或者 GPU 文件夾,根據Dockerfile來 build 不同版本的 Docker Caffe 鏡像。使用如下命令來 build 鏡像:
|
1
|
docker build -t repo_name/tag_name .
|
鏡像保存的地方我也不知道在哪兒,查書也沒查到,不過到找到了 Docker 安裝的部分文件在用戶根目錄的某個文件夾里面。反正鏡像在我們的鏡像倉庫里(后文會說到)。
1.2 搜索並下載 Caffe 的 Docker 鏡像
使用如下命令,可以在 Docker Hub 上搜索所有用戶上傳的鏡像,一般來說選擇點星星(Star)最多的鏡像。輸入命令(docker search caffe)后,顯示如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
root@spark:/home/yuens# docker search caffe
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tleyden5iwx/caffe-cpu-master 42 [OK]
tleyden5iwx/caffe-gpu-master 27 [OK]
kaixhin/caffe Ubuntu Core 14.04 + Caffe. 14 [OK]
kaixhin/cuda-caffe Ubuntu Core 14.04 + CUDA + Caffe. 14 [OK]
nvidia/caffe Caffe images from github.com/NVIDIA/nvidia... 4
neowaylabs/caffe-cpu Caffe CPU based on: https://hub.docker.co... 2 [OK]
mbartoli/caffe Caffe, CPU-only 1 [OK]
ruimashita/caffe-gpu-with-models ubuntu 14.04 cuda 7.0 caffe bvlc_referenc... 0 [OK]
tingtinglu/caffe caffe 0 [OK]
kavolorn/caffe Caffe image based on OpenCV image. 0 [OK]
suyongsun/caffe-gpu Caffe image with gpu mode. 0 [OK]
chakkritte/docker-caffe Docker caffe 0 [OK]
ruimashita/caffe-gpu ubuntu 14.04 cuda 7 (NVIDIA driver version... 0 [OK]
kaixhin/caffe-deps `kaixhin/caffe` dependencies. 0 [OK]
ruimashita/caffe-cpu-with-models ubuntu 14.04 caffe bvlc_reference_caffene... 0 [OK]
kaixhin/cuda-caffe-deps `kaixhin/cuda-caffe` dependencies. 0 [OK]
haoyangz/caffe-cnn caffe-cnn 0 [OK]
ruimashita/caffe-cpu ubuntu 14.04 caffe 0 [OK]
alfakini/caffe-cpu Docker container with Ubuntu Core 14.04, C... 0 [OK]
ypandit/caffe BLVC Caffe with PyCaffe 0 [OK]
mtngld/caffe-gpu Ubuntu + caffe (gpu ready) 0 [OK]
suyongsun/caffe-cpu Caffe image with cpu mode only. 0 [OK]
nitnelave/caffe Master branch of BVLC/caffe, on CentOS7 wi... 0 [OK]
elezar/caffe Caffe Docker Images 0 [OK]
patdiscvrd/caffe 0 [OK]
|
我們選擇星星最多的鏡像並下載,命令如下:
|
1
|
docker pull tleyden5iwx/caffe-cpu-master
|
我們這里選擇 cpu 版本。下載完成后鏡像就會在我們的鏡像倉庫里,可以通過命令(docker images)來查看,顯示如下:
|
1
2
3
4
5
|
root@spark:/home/yuens# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
build_repo/caffe-cpu latest e740a499ed4b 46 hours ago 1.307 GB
docker-caffe-cpu latest e740a499ed4b 46 hours ago 1.307 GB
ubuntu 14.04 90d5884b1ee0 11 days ago 188 MB
|
2. 查看當前運行的容器
首先,我們先來使用命令(docker ps)看看當前有哪些容器正在運行:
|
1
2
|
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
可以看到,當前沒有正在運行的容器,這個命令還可以帶一個參數 -a (代表全部,docker ps -a),查看所有的容器狀態,可以看到有的容器我們退出了的時間,創建了的時間等等信息:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
root@spark:/home/yuens# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a27e67f5757a docker-caffe-cpu "/bin/bash" 36 minutes ago Exited (137) 29 minutes ago happy_roentgen
0665dbc54249 docker-caffe-cpu "/bin/bash" 36 minutes ago Exited (0) 36 minutes ago lonely_yalow
8d3f3fed703c e74 "/bin/bash" 37 minutes ago Exited (0) 37 minutes ago sad_wescoff
49363061600e docker-caffe-cpu "/bin/bash" 37 minutes ago Exited (0) 37 minutes ago high_lamarr
b1e3c1784a49 docker-caffe-cpu "-itb" 38 minutes ago Created jovial_dubinsky
e46fc2828e48 docker-caffe-cpu "-ibt" 38 minutes ago Created reverent_dubinsky
bbf7ff03611f docker-caffe-cpu "/bin/bash" 39 minutes ago Exited (0) 39 minutes ago happy_chandrasekhar
15aa31c5ad8f docker-caffe-cpu "/bin/bash" About an hour ago Exited (130) 58 minutes ago condescending_brattain
2fe7b65c69c7 docker-caffe-cpu "/bin/bash" About an hour ago Exited (0) About an hour ago small_meninsky
a025ec63fe9f build_repo/caffe-cpu "/bin/bash" 28 hours ago Exited (130) 28 hours ago big_keller
f89e0ebf7f2d docker-caffe-cpu "/bin/bash" 28 hours ago Exited (0) 28 hours ago cranky_rosalind
fddf20df7d91 docker-caffe-cpu "/bin/bash" 28 hours ago Exited (0) 28 hours ago stupefied_shaw
|
3. 由 Docker 鏡像創建並運行一個容器
既然沒有正在運行的容器,那么我們根據鏡像來創建一個容器吧!使用命令(docker run -tdi REPOSITORY)來創建,之后再查看當前運行的容器有哪些。
|
1
2
3
4
5
|
root@spark:/home/yuens# docker run -tdi docker-caffe-cpu
7b3bf6742debcf59f583d6bc61e32b5f692b41cc5ec72a12a5bec8644718fd7b
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b3bf6742deb docker-caffe-cpu "/bin/bash" 3 seconds ago Up 2 seconds silly_euclid
|
創建容器並運行的命令(docker run -tdi REPOSITORY)中,REPOSITORY 名稱是鏡像倉庫中鏡像的名字,可以通過使用命令 (docker images)來查看當前本地鏡像倉庫有哪些鏡像,並根據要創建鏡像的 REPOSITORY 名來創建容器。
4. 進入容器內
在創建運行了容器后,我們進入容器。進入容器的命令(docker attach CONTAINER_ID,其中CONTAINER_ID只要開頭一點可以和其他的CONTAINER_ID區分就可以),執行結果如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
root@spark:/home/yuens# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b3bf6742deb docker-caffe-cpu "/bin/bash" 7 seconds ago Up 6 seconds silly_euclid
673de646bf70 docker-caffe-cpu "/bin/bash" 21 seconds ago Exited (0) 20 seconds ago furious_mclean
a27e67f5757a docker-caffe-cpu "/bin/bash" 38 minutes ago Exited (137) 31 minutes ago happy_roentgen
0665dbc54249 docker-caffe-cpu "/bin/bash" 38 minutes ago Exited (0) 38 minutes ago lonely_yalow
8d3f3fed703c e74 "/bin/bash" 39 minutes ago Exited (0) 39 minutes ago sad_wescoff
49363061600e docker-caffe-cpu "/bin/bash" 39 minutes ago Exited (0) 39 minutes ago high_lamarr
b1e3c1784a49 docker-caffe-cpu "-itb" 40 minutes ago Created jovial_dubinsky
e46fc2828e48 docker-caffe-cpu "-ibt" 40 minutes ago Created reverent_dubinsky
bbf7ff03611f docker-caffe-cpu "/bin/bash" 41 minutes ago Exited (0) 41 minutes ago happy_chandrasekhar
15aa31c5ad8f docker-caffe-cpu "/bin/bash" About an hour ago Exited (130) About an hour ago condescending_brattain
2fe7b65c69c7 docker-caffe-cpu "/bin/bash" About an hour ago Exited (0) About an hour ago small_meninsky
a025ec63fe9f build_repo/caffe-cpu "/bin/bash" 28 hours ago Exited (130) 28 hours ago big_keller
f89e0ebf7f2d docker-caffe-cpu "/bin/bash" 28 hours ago Exited (0) 28 hours ago cranky_rosalind
fddf20df7d91 docker-caffe-cpu "/bin/bash" 28 hours ago Exited (0) 28 hours ago stupefied_shaw
root@spark:/home/yuens# docker attach 7b3
root@7b3bf6742deb:/workspace#
|
一般在執行進入容器前,我們都會輸入查看當前正在運行的容器的命令(docker ps 或 docker ps -a),看着 CONTAINER_ID 來進入指定的容器。
有時候會出現命令行偽假死狀態(進入命令輸入完成后,等半天命令行不動,似乎卡死了),其實沒有,你輸入鍵盤上的回車敲擊幾下,發現好着呢(一般而言,當輸入docker attach命令完成后,瞬間就進入了容器,輸入回車鍵就跳出命令行偽假死狀態)。
5. 退出並停止容器
進入容器后,我們進行我們需要的作業,完成后或者設置完成后我們可以退出當前的容器,在容器里使用命令exit(或者直接鍵盤Ctrl+D)即可退出並暫停當前容器。
退出后,當我們需要再次啟動該容器,我們同樣是先查看剛剛退出暫停的容器的CONTAINER_ID(可以用命令docker ps -a來查看),然后容器開始執行的命令(docker start CONTAINER_ID)。
|
1
2
3
4
5
6
7
|
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@spark:/home/yuens# docker start 74
74
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74f5856efa76 docker-caffe-cpu "/bin/bash" 30 minutes ago Up 1 seconds silly_davinci
|
對於正在運行中的容器,我們停止其運行,可以使用停止命令(docker stop CONTAINER_ID),結果如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
root@spark:/home/yuens# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
build_repo/caffe-cpu latest e740a499ed4b 47 hours ago 1.307 GB
docker-caffe-cpu latest e740a499ed4b 47 hours ago 1.307 GB
ubuntu 14.04 90d5884b1ee0 11 days ago 188 MB
root@spark:/home/yuens# docker run -idt ubuntu
Unable to find image 'ubuntu:latest' locally
root@spark:/home/yuens# docker run -idt 90d5
9ce93c6664f3d936704949b8ded91b158492088c3727e77f5cccf9c65fc5407d
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ce93c6664f3 90d5 "/bin/bash" 9 seconds ago Up 8 seconds naughty_rosalind
74f5856efa76 docker-caffe-cpu "/bin/bash" 51 minutes ago Up 21 minutes silly_davinci
root@spark:/home/yuens# docker stop 9ce
9ce
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74f5856efa76 docker-caffe-cpu "/bin/bash" 52 minutes ago Up 22 minutes silly_davinci
|
可發現,我們在創建並運行某個容器的時候,可以用其 IMAGE ID (鏡像ID)來創建。
6. 進入 Caffe 容器嘗試使用 Python
下面是在Shell里操作,大致含義:
- 首先查看現在是否有正在運行的容器,發現沒有,那我們由 docker-caffe-cpu 的鏡像 ID 創建一個容器,然后觀察當前是否增加了一個運行中的容器,發現有的,那么我們就連接 attach 進這個容器中。
- 進去后,我們到根目錄的opt文件夾下,看到 caffe 安裝文件在這里。
- 輸入 Python 進入,嘗試 import caffe,第一次初始化中,第二次成功。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@spark:/home/yuens# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
build_repo/caffe-cpu latest e740a499ed4b 47 hours ago 1.307 GB
docker-caffe-cpu latest e740a499ed4b 47 hours ago 1.307 GB
ubuntu 14.04 90d5884b1ee0 11 days ago 188 MB
root@spark:/home/yuens# docker run -idt e74
f8dd391d23a9096f03813486fac51e255bbc7828b72ab33eef8e9eaee3e7174e
root@spark:/home/yuens# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8dd391d23a9 e74 "/bin/bash" 4 seconds ago Up 3 seconds compassionate_leakey
root@spark:/home/yuens# docker attach e74
Error: No such container: e74
root@spark:/home/yuens# docker attach f8
Error response from daemon: Multiple IDs found with provided prefix
root@spark:/home/yuens# docker attach f8d
root@f8dd391d23a9:/workspace#
root@f8dd391d23a9:/workspace# cd /
root@f8dd391d23a9:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var workspace
root@f8dd391d23a9:/# cd opt/
root@f8dd391d23a9:/opt# ls
caffe
root@f8dd391d23a9:/opt# cd caffe/
root@f8dd391d23a9:/opt/caffe# ls
CMakeLists.txt CONTRIBUTORS.md LICENSE Makefile.config.example build cmake docker examples matlab python src
CONTRIBUTING.md INSTALL.md Makefile README.md caffe.cloc data docs include models scripts tools
root@f8dd391d23a9:/opt/caffe# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
libdc1394 error: Failed to initialize libdc1394
/usr/local/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
>>> import caffe
>>> print caffe
<module 'caffe' from '/opt/caffe/python/caffe/__init__.py'>
|
若發現輸入 python 后,嘗試 import caffe 失敗,提示如下:
|
1
2
3
4
5
6
7
8
|
[root@0b98cab20445 home]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named caffe
|
那是因為沒有編譯 pycaffe ,那就切換到 root 目錄的 caffe 下(cd ~/caffe 或 cd /root/caffe),然后編譯 pycaffe(貌似編譯有點問題,后面import caffe不行,這里先Mark一下)。
7. 啟動和其它問題
7.1 Ubuntu14.04啟動失敗
后來我在Ubuntu14.04上安裝后,運行時出現如下信息的報錯:
|
1
|
post http:///var/run/docker.sock/v1.18/containers/service/start: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
|
執行如下命令后,問題解決:
|
1
2
|
sudo apt-get install apparmor
service docker restart
|
7.2 無法從倉庫下載到鏡像
使用 docker pull 命令報錯信息如下:
|
1
|
FATA[0025] Get https://index.docker.io/v1/repositories/kaixhin/caffe/images: dial tcp: lookup index.docker.io on 127.0.1.1:53: read udp 127.0.1.1:53: i/o timeout
|
目前就是反復使用該命令,總會有一次成功的。但這不是個辦法,所以可以考慮翻牆或者國內的一些倉庫,比方說使用 DaoCloud 的倉庫或者是阿里的。我們這里提供一個阿里的鏡像(專門做DeepLearning和HPC,里面已經集成了CUDA7.0,Caffe,Thean,Torch7等)。
可以使用該命令直接把鏡像 pull 下來:
|
1
|
docker pull registry.aliyuncs.com/alicloudhpc/toolkit
|
由於阿里提供的鏡像比較大,將近9個G,下載下來后,用 docker images 命令查看當前的鏡像信息:
|
1
2
3
|
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 99527b47b472 5 days ago 1.1 GB
registry.aliyuncs.com/alicloudhpc/toolkit latest 4f6e0348746d 4 months ago 8.589 GB
|
其中,<none>是筆者尚未下載完被強制暫停的(只包含) caffe 的鏡像。
7.3 容器內無法訪問外網
注:本小節是2017年02月20日追加的博客內容。重新安裝系統后把docker按照官方教程安裝了,但是從網上docker pull下來的鏡像,進入容器無法訪問外網導致無法安裝軟件。下面給出解決方案和參考鏈接。
根據后文的參考,我屬於的問題是默認的docker配置文件沒有修改,需要改dns server就好了。
|
1
|
vi /etc/default/docker
|
去掉“docker_OPTS=”–dns 8.8.8.8 –dns 8.8.4.4″”前的#號。
參考的這個,總結了Docker容器內不能聯網的6種解決方案:http://blog.csdn.net/yangzhenping/article/details/43567155
參考
- Docker 4 — 總結(Docker常用命令):https://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html
- linux – FATA[0000] Get http:///var/run/docker.sock/v1.17/version: dial unix /var/run/docker.sock – Stack Overflow http://stackoverflow.com/questions/29294286/fata0000-get-http-var-run-docker-sock-v1-17-version-dial-unix-var-run-doc
- 阿里開發者平台(DL+HPC的docker鏡像) https://dev.aliyun.com/detail.html?spm=5176.1972343.2.20.C16rVe&repoId=2
- Pulling Docker images: i/o timeout – Open Source Projects / Open Source Registry API – Docker Forums (用處可能不大) https://forums.docker.com/t/pulling-docker-images-i-o-timeout/740/11
- (寫的很詳細)Docker容器內不能聯網的6種解決方案 – 每一天都有新的希望 – 博客頻道 – CSDN.NEThttp://blog.csdn.net/yangzhenping/article/details/43567155
更多參考
-
Docker —— 從入門到實踐:http://udn.yyuap.com/doc/docker_practice/index.html
- 國內首個 Docker Hub 鏡像服務 DaoCloud 上線 – 開源中國社區 http://www.oschina.net/news/57894/daocloud
This entry was posted in 學習筆記·雜 and tagged Ubuntu, docker, Caffe on 2016年5月16日.
Post navigation

Pingback: Ubuntu16.04 借助 Docker 安裝 Caffe-鯨魚雲