1. 程式人生 > >基於docker的caffe環境搭建與使用示例(根據自己的情況稍作修改)

基於docker的caffe環境搭建與使用示例(根據自己的情況稍作修改)

0. 引言

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。因此,Docker給應用提供了一個從開發到上線均一致的程式碼環境,讓程式碼的流水線變得簡單不少。

以下是基於docker的caffe環境搭建過程,並給出使用示例。

1. 安裝Docker

2. 基於Docker安裝Caffe

在caffe官網上已經提供了建立caffe映象所需的Dockerfile,並且在docker hub上也能找到:https://hub.docker.com/r/elezar/caffe/。 
1) 通過以下命令即可在本地建立caffe映象:

$ sudo docker pull elezar/caffe:cpu注意,如果要建立GPU版本,則將上述命令中的cpu改成gpu。
 $ sudo  docker pull elezar/caffe:gpu

2) 下載完成後,測試是否安裝正確。 
輸入:

$ sudo docker run -ti elezar/caffe:cpu caffe --versionor$ sudo docker run -ti elezar/caffe:gpu caffe --version

會看到如下輸出,說明安裝成功:

libdc1394 error: Failed to initialize libdc1394
caffe version
1.0.0-rc3

也可以輸入:

$ docker images
  • 1

可以看到本地多了一個caffe映象。 
這裡寫圖片描述

3. Docker下caffe的使用

3.1 在互動模式下執行caffe容器:

$ sudo docker run -t -i elezar/caffe:cpu /bin/bash
  • 1
  • docker run 執行一個容器
  • -t 分配一個(偽)tty (link is external)
  • -i 互動模式 (so we can interact with it)
  • elezar/caffe:cpu 使用 elezar/caffe:cpu 映象建立容器
  • /bin/bash 執行命令 bash shell

這時我們就可以發現我們已經進入了剛剛建立的容器中,hostname已經變成

[email protected],其中@後面的這一串數字是當前容器的ID。搭建好的caffe資料夾在/opt/caffe/目錄下: 
這裡寫圖片描述 
然後就可以正常使用了。

3.2 以mnist為例,獲取mnist資料:

$ cd /opt/caffe/data/mnist/
$ ./get_mnist.sh
  • 1
  • 2

可以看到當前目錄下生成了新的mnist資料: 
這裡寫圖片描述

是不是和直接在linux系統上使用caffe完全一樣呢?是的,通過互動模式的設定,在docker的容器中使用caffe就和直接在linux系統上一樣一樣滴~~當然,還是有不一樣的地方,請看下回分解 ↓↓↓

3.3 容器中資料如何儲存

按ctrl+D 或 exit 退出當前容器。 
退出後,如果你想重新使用之前的容器,可以通過以下命令重啟,回到之前的狀態:

$ docker start container_ID
$ docker attach container_ID
  • 1
  • 2

另外要注意,如果你新執行caffe映象的一個容器,你會發現在之前那個容器中生成的資料都沒有啦!

要理解這一點,首先我們需要知道Docker的檔案系統是如何工作的。Docker映象是由多個檔案系統(只讀層)疊加而成。當我們啟動一個容器的時候,Docker會載入只讀映象層並在其上新增一個讀寫層。如果執行中的容器修改了現有的一個已經存在的檔案,那該檔案將會從讀寫層下面的只讀層複製到讀寫層,該檔案的只讀版本仍然存在,只是已經被讀寫層中該檔案的副本所隱藏。當刪除Docker容器,並通過該映象重新啟動時,之前的更改將會丟失。(在Docker中,只讀層及在頂部的讀寫層的組合被稱為Union File System,聯合檔案系統)。

那麼如何儲存這種修改呢?有兩種方式,一種是通過docker commit來擴充套件一個新的image,另一種是通過docker volume,繞過預設的聯合檔案系統,將更改的檔案以正常的檔案或者目錄的形式保存於宿主機上。

3.3.1 docker commit

$ docker commit c5f24e953610 mycaffe
  • 1

其中c5f24e953610是我們之前所使用容器的ID,可以通過docker ps -a檢視;mycaffe是新生成的映象的名稱。 
這時候我們再使用docker images命令檢視現有映象,發現除了原始的elezar/caffe外,還多了一個名為mycaffe的映象,即為我們剛建立的映象: 
這裡寫圖片描述 
如果我們現在為mycaffe建立一個容器,並檢視data/mnist/目錄,就會發現之前生成的mnist資料存在了,說明容器中的資料被我們儲存下來了:

$ docker run -ti mycaffe /bin/bash
$ cd /opt/caffe/data/mnist/
$ ls
  • 1
  • 2
  • 3

這裡寫圖片描述

3.3.2 docker Volume

要實現主機和容器之間的資料互動,需要通過docker Volume來完成。 
首先在主機中建立一個用於儲存資料的資料夾,並在其中新增一個檔案作為測試:

$ mkdir dockerData
$ cd dockerData
$ touch test-file
  • 1
  • 2
  • 3

這裡寫圖片描述

然後將該資料夾掛載到新的容器中,在執行時使用-v來宣告Volume:

$ docker run -ti -v /home/elaine/dockerData:/dockerData elezar/caffe:cpu
  • 1

以上命令會將主機中的/home/elaine/dockerData目錄掛載到容器中的/dockerData目錄下,這樣我們就可以在容器中看到這個目錄了,並且可以看到我們事先存放的test-file: 
這裡寫圖片描述

我們可以在主機上直接操作該目錄,比如在主機上再增加一個檔案,我們也可以馬上在容器中看到變化: 
這裡寫圖片描述

我們也可以在容器中給這個目錄新增資料,如caffe訓練後的model等,任何在/dockerData路徑的檔案都可以在主機中訪問到。

3.4 附:Docker刪除指令

//刪除指定容器
$ docker rm container_ID/name
//刪除所有已經停止的容器
$ docker rm $(docker ps -a -q)
//刪除指定映象
$ docker rmi image_name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

reference:

相關推薦

基於docker的caffe環境搭建使用示例(根據自己情況修改)

0. 引言 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。因此,Docker給應用提供了一個從開發到上線均一致的程式碼環境,讓程式碼的流水線變得簡單不少。 以下是基於dock

S2X環境搭建示例執行

S2X環境搭建與示例執行 http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html 環境 Maven project Built in Eclipse Eclipse 3.8/4.2/4.3

基於docker的caffe環境搭建使用示例

0. 引言Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。因此,Docker給應用提供了一個從開發到上線均一致的程式碼環境,讓程式碼的流水線變得簡單不少。以下是基於docker的caf

dubbo開發環境搭建tomcat集成、DEMO示例(最完整版本、帶管理控制臺、監控中心、zookeeper)

-s http服務 ppr context 正常 windows web容器 web.xml配置 web.xml 以windows為例,linux基本相同,開發環境一般linux,個人環境一般windows(如果不開額外vm的話)。 示例以dubbo官方自帶demo為例子

Swift3.0服務端開發(一) 完整示例概述及Perfect環境搭建配置(服務端+iOS端)

本篇部落格算是一個開頭,接下來會持續更新使用Swift3.0開發服務端相關的部落格。當然,我們使用目前使用Swift開發服務端較為成熟的框架Perfect來實現。Perfect框架是加拿大一個創業團隊開發的,目前是Perfect2.0版本,關於Perfect框架,下方會詳細的介紹。本篇部落格會演示一個完整的D

Tensorflow object detection API 搭建屬於自己的物體識別模型(1)——環境搭建測試

後續部落格地址(附帶視訊教程)--------------------------------------------------------------------------------------------------最近對深度學習比較感興趣,看了網上很多資料,嘗試了

Tensorflow object detection API 搭建屬於自己的物體識別模型——環境搭建測試

1、開發環境搭建 ①、安裝Anaconda   建議選擇 Anaconda3-5.0.1 版本,已經整合大多數庫,並將其作為預設python版本(3.6.3),配置好環境變數(Anaconda安裝則已經配好)。也可以直接安裝python,安裝各種包比較麻煩,因此直接裝了Anaconda整合環境。   安

Maven專案管理(一) IntelliJ Idea+Maven環境搭建基於命令列的基本使用

Maven MAVEN是一個強大的構建工具,ItelliJ Idea 是個強大的IDE,幫他們聯合起來使用,將會是多麼美妙的事情。但是IDE中整合的Maven總使習慣使用命令列的我們頭大,不想為了使用IDE重新學習如何使用怎麼辦,那麼就通過配置環境相容就好了。

tomcat8+jdk1.8.0_131環境搭建添加用戶(win764位)

tomcattomcat8下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14-windows-x64.zip jdk1.8.0下載地址:http://download.

elk5.x環境搭建常用插件安裝

elk ELK 5.X 環境搭建與常用插件安裝環境介紹:ip: 192.168.250.131os: CentOS 7.1.1503 (Core)內存不要給的太低,至少4G吧,否則elasticsearch啟動會報錯。軟件及其版本 這裏軟件包都解壓在了/opt下,註意!logstash-

Java環境搭建配置

下一步 javase 環境 分享 sys ++ jdk1.8 8.0 java環境搭建   JDK下載與安裝   俗話說,工欲善其事,必先利其器。首先開發Java,先需要下載JDK安裝包,官網下載地址:http://www.oracle.com/technetwork/ja

roboframework環境搭建使用

過程 rip 窗口 style 雙擊 用例 new t images run 環境搭建 一安裝python2.7(python3.4版本的話後面ride工具裝不上,要是有高手python3.4裝成功了請指教) 1下載安裝包 2一直點擊下一步(中間過程可以自定義目錄) 二安裝

LinuxserverJboss執行環境搭建步驟和開機自己主動啟動腳本編寫執行

web bin 路徑 for scrip 環境變量 pro app 版本號 Jboss執行環境:Linux+Jdk+Jboss+jsp系統Jboss軟件說明:相似於Tomcat。就是一個跑Jsp系統的環境,他的網站路徑跟Tomcat相似,Tomcat存放網站文件到web

hadoop環境搭建測試

sla pre person n! count track 查看 4.2 lin 搭建參看: http://blog.csdn.net/w13770269691/article/details/16883663/ 查看集群狀態: [[email pr

安卓第一課:android studio 的環境搭建真機運行以及遇到的問題

自己的 安卓 structure 最好 not found 創建過程 cor 虛擬 col AS的下載: https://developer.android.com/studio/index.html AS的安裝: android studio, sdk, virtual

[lisp] scheme環境搭建編譯運行

文件格式 .com book factorial 加載過程 牛頓法 搭建 mac 代碼 搭建環境參考這篇 http://leochin.com/mac-scheme-install/ 用文本編輯器寫代碼 保存文件格式為 .scm 在終端中cd到scm文件所在文件夾, 執行

MongoDB(一)環境搭建初始配置

dba 註意 管理員 開機自啟動 拓展 width 間接 face 環境搭建 前言   最近的項目中需要用到MongoDB,所這段時間需要學習知道怎麽去使用這個數據庫。   這裏我先簡單的介紹一下什麽是MongoDB,後面還會詳細的介紹:     MongoDB 是一

Spring4學習筆記一:環境搭建插件安裝

str nag j2e 容器 獲取 相關 market 至少 ips 一:環境搭建 1:開發環境:JDK安裝、Eclipse安裝 2:數據庫:Mysql、Sequel Pro(數據庫可視化操作工具) 3:web服務器:Tomcat下載,並且把tomcat配置到Eclip

WIN10網狐開發環境搭建Android客戶端編譯

ces text water cto img term 技術 分享 環境 http://i2.51cto.com/images/blog/201802/09/2e8eb644b82d1642df8b920f053a7bb0.png?x-oss-process=image/w

Linux-LAMP環境搭建配置

Linux-LAMP查詢Linux系統是多少位# uname -i下載# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz # wget http://archive.apache.o