最近花了點時間學習了一下docker,發現docker仍是挺好用的,學了後也在實際中使用到了,就是一個靜態頁面須要跑在服務器上查看效果,若是用node跑的話還須要在項目中加上其餘項目中沒有用到的東西,而後用nginx的話還須要寫個nginx的配置文件,若是在你的文件夾裏面還須要設置權限,都比較麻煩,而後我就直接用上了docker,在以前使用docker的時候也裝上過nginx的docker鏡像,而後就只須要一條命令建立一個nginx的容器,而後把目標目錄掛載到nginx上就能夠訪問到了,而後每次打開只須要docker start一下就行了,很是方便。html
我再來說講我對docker的認識,docker上你能夠下載多個鏡像,每一個鏡像都是一個環境,而後鏡像能夠跑起來建立一個容器,建立的這個容器是鏡像的一個實例,對鏡像沒有影響,就和咱們的new操做同樣,一個鏡像能夠建立多個不一樣的容器,你也能夠把容器進行修改打包成一個鏡像保存起來,而後你能夠移植到各個客戶端上去使用,這也是docker的一個用處,在之前配環境須要執行各類命令,而後又由於各類版本不一樣的問題出現各類莫名其妙的問題,如今你能夠打包成一個對應的鏡像,使用的人只須要下下來而後run一下就行了。node
若是你須要使用(玩)docker的話你能夠去docker官網下載一個安裝包具體的安裝不一樣系統可能會有點不一樣,能夠參考一下菜鳥教程,其實若是你如今只是想嘗試一下docker,並不想下載他的話這裏有一個能夠雲把玩docker的地方,建立一個docker的帳號而後打開這裏建立一個新的實例,裏面就是一個已經有docker環境的系統同樣,你就能夠使用docker的各類命令去學習docker。nginx
docker鏡像(Images)就能夠理解成是一個打包好的環境,和github同樣,docker也有一個本身的hub,DockerHub,是一個全部人儲存鏡像的地方,你能夠獲取到別人的鏡像來使用好比說你能夠搜索nginx而後就能夠看到搜索項中的nginx,這是一個官方的docker鏡像,好比windstormrage/nginx這種就是用戶本身上傳的鏡像,通常使用仍是使用官方的比較安全,而後你也能夠上傳你的鏡像。git
docker容器(Container)能夠理解成是鏡像實例化出的一個系統,你能夠運行容器中的命令,而後也能夠打本身本地的目錄掛載到容器對應位置,而後也能夠把容器接口映射到本地上打開。github
咱們就經過一個小栗子來學習一下docker的操做,我這裏使用playDocker來操做,你能夠用你的電腦來操做。docker
咱們拉取到一個nginx的鏡像windows
docker pull nginx
docker會自動從你的源(DockerHub)上找到名字爲nginx的鏡像,而後拉取下來。
而後你能夠經過命令來查看你本地擁有的鏡像安全
docker images
擁有了一個鏡像後你就能夠運行它生成一個容器服務器
docker run -d -p 8360:80 nginx
其中-d是讓容器在後臺運行,-p是把內部的端口映射到咱們的主機上面,咱們這裏是把nginx的80端口映射到了咱們的8360端口。而後返回的哈希值是咱們當前的容器的id,使用這個id咱們能夠操做咱們的容器。好比說咱們能夠經過學習
docker stop cf
其中cf是對應id的前幾位,他只要能夠找到對應的容器就能夠來中止這個容器,而後若是是使用的playDocker來操做的話你能夠點擊這裏來查看對應端口的頁面
若是你用的是本身的電腦的話你能夠打開localhost:8360看到你nginx運行起來的頁面了。而後你能夠經過
docker ps
查看你運行中的容器
你能夠在DockerHub的nginx查看更多關於這個鏡像的使用。
好比說我上面說的掛載項目就能夠使用
docker run -p 8360:80 -v /html/demo:/usr/share/nginx/html -d nginx
這個應該就只能在本地嘗試了,你第一次掛載的時候docker會找你要權限,你容許就行了
其中-v就是掛載,而後個人項目是在/html/demo上。而後你打開localhost:8360就能夠看見你demo目錄下的文件了。
其實就是在你運行鏡像的時候能夠加上你須要運行容器裏面的命令
docker run learn/tutorial apt-get install -y ping
在你運行learn/tutorial的時候docker發現你並無這個鏡像,而後docker會本身去hub上去找,而後下載下來,而後後面的apt-get install -y ping就是在tutorial中安裝ping命令。 你能夠經過
docker ps -a
來找到你當前的容器,你修改了容器後能夠經過commit命令來保存你此次修改,他的保存是生成一個新的鏡像。
docker commit fc windstormrage/ping
其中的fc是你容器的id,而後後面跟着的是你的鏡像名稱,鏡像名稱最好是以你的DockeHun的名稱加上/而後加上鏡像名組成,否則到後面你不能上傳,由於鏡像只能上傳到本身名字的空間下。
而後你能夠經過run命令來運行你剛剛打包了的鏡像
docker run windstormrage/ping ping www.google.com
而後你須要知道的是你每次run都是建立了一個新的容器,對你以前建立的容器是沒有影響的。
發佈鏡像很簡單
docker push windstormrage/ping
注意的就是你的用戶名須要正確,否則會報錯。
其實docker鏡像通常是經過dockerfile來建立,咱們這裏只是簡單的入門,暫時不涉及到本身手動來建立一個鏡像,若是感興趣的能夠看看後面的參考資料。