Docker學習筆記(一)

Docker學習筆記(一)

鏈接<1>是我認為對Docker解釋得最清晰的文章。Docker內由三個部分組成,鏡像(image)、容器(container)和倉庫(repository)。Docker把應用程序及其依賴的運行環境(依賴項),打包在鏡像或容器裡面,進而發布到不同的平台上運行。Docker鏡像就是一堆只讀層的統一視角,是用於啟動Docker容器的只讀模板,如下圖所示,

它們重疊在一起。除了最下面一層,其他層都會有一個指針指向下一層。這些層是Docker內部的實現細節,並且能夠在Docker主機的文件系統上訪問到。統一文件系統技術能夠將不同的層整合成一個文件系統,為這些層提供一個統一的視角,這樣就隱藏了多層的存在,在用戶的角度來看,只存在一個文件系統。這裡我們需要了解一個概念,因為我是在windows系統下安裝的DockerToolbox,也就意味著有兩個系統,一個是我們直接操作的圖形界面系統----宿主機,一個是Docker主機----VirtualBox虛擬機。通過鏈接<2>可以直接下載Docker工具箱,裡面有已創建好的VirtualBox虛擬機,並在該虛擬機上部署了Docker,非常方便。

由下圖可以看到,Docker部署在『default』的虛擬機上,IP為192.168.99.100。

當然我們也可以利用以下命令,重新創建新的Docker主機,名稱為『damon-1』:

docker-machine create --driver virtualbox damon-1

這時可以看到damon-1的主機已經被創建,但是還沒有被激活(『-』符號表示未被激活,『*』表示已激活)。然後輸入docker-machine env damon-1來查看環境變數,

然後再輸入上圖中紅色框的語句,就可以激活damon-1主機,如下圖所示。

一個VitrualBox可以搭建多個Docker主機(Host),可以通過docker-machine start(或stop)來開啟(或停止)所有主機,也可以開啟機子,如開啟damon-1,則用docker start damon-1。但是注意,一個VirtualBox只能激活一個Docker Host。

使用Docker Machine成功在VirtualBox上創建並管理一台Docker主機。Docker Machine能讓用戶快速地在不同的平台上部署Docker主機,就像部署在VirtualBox上一樣。VirtualBox驅動可以在本地機器上使用,也可以在數據中心的虛擬機上使用。Docker Machine驅動除了支持本地的VirtualBox之外,還支持遠端的Digital Ocean、AWS、Azure、VMware以及其它基礎設施。

接下來玩一下如何通過Docker來創建一個簡單的python app。之前做Python app首先要在機子上配置好運行環境,但是現在只需要把Python鏡像拉下來即可,不用安裝東西。鏡像能夠保證app和其依賴項、平台環境同時運行。這些輕便的鏡像是用Dockerfile來定義容器環境的。網路介面和磁碟驅動都會被虛擬化到隔離的容器環境里,這裡的隔離就包括了用戶隔離(或許可權隔離)、進程隔離、網路歌咯、文件系統隔離等。因此我們需要暴露一個埠給容器外部做映射。

創建一個文件夾docker-demo-1,並在裡面創建三個文件

app.py的代碼如下:

Dockerfile如下:

requirements.txt如下:

然後在終端cd到docker-demo-1文件夾下,輸入docker build -t test-demo-1 .

然後就開始一層層下載基礎鏡像,來生成一個叫test-demo-1的鏡像,接著輸入docker images來查看。從下圖可以看到,有兩個鏡像,一個是我們創建的test-demo-1,一個是基礎鏡像python:2.7-slim。

接著就是開啟app,輸入docker run -p 4000:80 test-demo-1,80是我們之前暴露的埠,4000是我們在外部映射的埠。然後會出現一下信息,可以看到Python正在通過0.0.0.0:80埠給app提供服務。但這個信息是從容器內部傳出來的,也就意味著容器並不知道你已經把80埠映射給了外部的4000埠,因此如果你是在linux主機下,可以打開http://localhost:4000可以查看app運行情況。

但由於我用的是在Win7上運行的Docker Toolbox,所以我需要使用Docker主機的IP,而不是localhost,輸入docker-machine ip damon-1可以查看damon-1主機的ip。注意,這裡只是後面不接主機名稱,就會列印default主機的ip,即使該default主機沒有被激活。打開網頁看到下面的輸出就對了。

注意:

開啟容器後,要先停止容器,才能刪除,否則會出錯。下面是一些常用的命令

參考鏈接:

<1> merrigrove.blogspot.com

<2> download.docker.com/win


推薦閱讀:

科技會讓人們變得疏遠嗎?
介紹一下阿里最近的黑科技
砥礪10載成就非凡 第七屆EEVIA年度中國ICT媒體論壇熠芯光
斯里蘭卡人民的互聯網時代!

TAG:筆記 | 科技 | Docker |