Docker概念及操作命令細節(帶詳細實際操作截圖)

由於在公司最近要用服務器上的GPU裝caffe進行開發,但是沒有管理員權限,又怕自己裝環境把整體的環境弄亂了,因此便打算使用docker來進行開發工作。

概念

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

Docker的應用場景

Web 應用的自動化打包和發佈。
自動化測試和持續集成、發佈。
在服務型環境中部署和調整數據庫或其他的後臺應用。
從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。

Docker 的優點

1、簡化程序:
Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數週的 任務,在Docker容器的處理下,只需要數秒就能完成。
2、避免選擇恐懼症:
如果你有選擇恐懼症,還是資深患者。Docker 幫你 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、後臺應用、數據庫應用、大數據應用比如 Hadoop 集羣、消息隊列等等都可以打包成一個鏡像部署。
3、節省開支:
一方面,雲計算時代到來,使開發者不必爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。

Docker框架

這裏寫圖片描述
這裏寫圖片描述

以上內容來自:http://www.runoob.com/docker/docker-architecture.html

Docker常用命令

1、查看現存本地鏡像
images即鏡像的意思,每個鏡像即單獨的一套環境,如windows鏡像,Ubuntu鏡像,docker在這些鏡像裏爲你裝好了所需要的軟件環境,所以說非常方便

docker images
//如下圖:

這裏寫圖片描述

2、尋找所需鏡像

docker search image_name
//例如:docker search caffe(caffe爲一個框架),結果如下圖所示,根據星星數列出了可以下載的caffe版本。

這裏寫圖片描述

3、下載所需鏡像

docker pull image_name
//例如:docker pull bvlc/caffe

4、運行鏡像

docker run --rm -ti nvidia/cuda bash
//運行成功後即進入這個鏡像的root權限根目錄下,同時會產生一個容器,容器名即爲7a035917f5b8,如下圖: 

這裏寫圖片描述

5、查看鏡像系統信息

cat /etc/issue
//這裏要進入鏡像之後,再輸入本條命令

6、查看運行中的容器

docker ps

7、退出鏡像

exit
//同時會銷燬掉已經創建的容器,推出前記得把想要保存的保存。

8、查看鏡像創建歷史

docker history images_name
//例如:docker history nvidia/cuda,如下圖所示,顯示了鏡像被創建時候的信息。

這裏寫圖片描述

9、刪除鏡像

docker rmi -f ID
//注意在刪除鏡像的過程中要保證鏡像內沒有容器在運行,否則將刪除失敗,如下圖:

這裏寫圖片描述
因此正確的刪除順序爲先停止鏡像內的容器,而後再刪除鏡像。
正確的命令順序爲:

docker stop container_ID 
docker rmi -f image_name
//刪除後的結果如圖所示:

這裏寫圖片描述

10、保存容器內容爲新的鏡像

docker commit  container_id   new_image_name

比如我這裏先運行nvidia/cuda鏡像,系統同時創建了一個ID爲15df406da334的容器,可以看到剛開始的home目錄下是什麼都沒有的,然後我創建一個叫做hello的目錄,如下圖所示:我想把這個修改過的容器保存爲一個新的鏡像。
這裏寫圖片描述
接下來我需要重新開一個終端,然後輸入docker commit container_id new_image_name 便完成了對容器修改內容的保存。如下圖所示,產生了一個新的名爲newimage的鏡像。下次我們便可以啓動這個鏡像,來還原上次的的工作環境。
這裏寫圖片描述

11、停止容器

docker stop container_id
//如下圖:

這裏寫圖片描述

12、執行已有容器

docker exec -it contiainer_name /bin/bash
//如下圖所示:

這裏寫圖片描述

13、掛載本地目錄
注意掛載的過程中,會覆蓋原有的目錄下的內容,因此掛載前最好先建一個空的目錄,然後掛載在這個目錄下。掛載完之後建議保存容器。

docker run -it -v 本地文件絕對路徑:容器中目錄 鏡像名 /bin/bash
例如:docker run -it -v /data/yanpengfei:/home newimage /bin/bash

這裏寫圖片描述

14、從容器裏面拷文件到宿主機
在宿主機裏面執行如下命令

docker cp 容器名:要拷貝的文件在容器裏面的路徑       要拷貝到宿主機的相應路徑
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

15、從宿主機拷文件到容器裏面

在宿主機裏面執行如下命令

docker cp 要拷貝的文件路徑 容器名:要拷貝到容器裏面對應的路徑     
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

16、暫停容器(和停止刪除是不一樣的,暫停下次還可以啓動,相當於休眠、快照功能)
這裏寫圖片描述

17、上傳鏡像至docker庫用以備份
見博主鏈接:https://www.cnblogs.com/boshen-hzb/p/6373549.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章