Docker是什么?
Docker的中文本意是碼頭工人,用于搬運貨柜。Docker官網(wǎng)給出的解釋是Docker是世界領(lǐng)先的軟件貨柜運輸平臺。通俗來說就是Docker就是一個可以將軟件打包在一個標準的“貨柜”里,并可以輕松遷移的平臺。
Docker有什么作用?
Docker容器打包軟件到一個包含了所有運行所需環(huán)境(代碼、運行時狀態(tài)、系統(tǒng)工具、系統(tǒng)庫——任何可以被安裝在服務器上的環(huán)境)的文件系統(tǒng)里,這樣軟件無論被遷移到哪里都是同樣的運行環(huán)境。
通俗來說就是開發(fā)環(huán)境如果沒有問題,用Docker打包成容器在服務器上運行,至少不會遇到環(huán)境問題。
還有像我這樣使用Mac開發(fā)的程序員,如果需要開發(fā)oracle數(shù)據(jù)庫,本地是無法安裝oracle的,可以通過docker運行一個oracle鏡像。
Docker的特點
輕量性
運行在一臺機器上的容器共享其操作系統(tǒng)內(nèi)核,它們啟動使用更少的內(nèi)存。Docker的鏡像文件可以通過分層的文件系統(tǒng)及共享的公共文件創(chuàng)建(說白了就是Docker的鏡像文件可以在其他鏡像基礎(chǔ)上創(chuàng)建并且還可以共享使用其他鏡像或操作系統(tǒng)的文件,這樣鏡像文件就很小),節(jié)省磁盤空間并提高下載效率。
開放性
Docker容器基于開放標準,使容器能夠在所有的主流Linux及windows或者其他設備的頂層運行。
默認安全性
容器隔離彼此和基礎(chǔ)架構(gòu)應用,同時為應用程序提供了額外的保護層。
Docker容器與虛擬機比較
虛擬機
虛擬機系統(tǒng)包含應用程序、必要的二進制文件和庫和一個完整的客體操作系統(tǒng),所有這些加起來至少幾十GB。
Docker容器
Docker容器包含應用程序及其所需依賴,在主機操作系統(tǒng)上運行時,共享主機操作系統(tǒng)內(nèi)核,每個容器都作為獨立進程運行。Docker容器不限制設備型號等,可以運行在所有的設備上。
Docker安裝
Mac上安裝
請參閱Docker官網(wǎng)-Docker for Mac
Windows上安裝
請參閱Docker官網(wǎng)-Docker for Windows
Ubuntu Linux上安裝
請參閱Docker官網(wǎng)-Docker for Ubuntu
Docker基礎(chǔ)操作
搜索鏡像
作為初學者和實用主義者,建議先學習使用別人的鏡像,即方便又簡單,網(wǎng)上有很多牛人制作好的鏡像文件,我只需找到它們直接使用即可,可大大減少我們搭建環(huán)境的時間。
方法一:訪問Docker Hub網(wǎng)站搜索
-
首先通過瀏覽器訪問Docker Hub網(wǎng)站
-
在右上角的搜索欄中輸入要搜做的鏡像關(guān)鍵字,如:tomcat,返回如下頁面:
-
選擇需要使用鏡像,如:
-
查看鏡像詳細
方法二:通過命令行搜索
$ docker search tomcat
[圖片上傳失敗...(image-6d63bf-1585114170564)]
下載鏡像
在命令行模式下鍵入以下命令
$ docker pull tomcat
其中“tomcat”是鏡像名(name),該命令可以在Docker Hub官網(wǎng)上搜索到的鏡像詳細中查看到
[圖片上傳失敗...(image-658599-1585114170564)]
查看本地鏡像列表
在命令行模式下鍵入以下命令
$ docker images
[圖片上傳失敗...(image-981770-1585114170564)]
其中“image id”為鏡像編號
刪除本地鏡像
在命令行模式下鍵入以下命令
$ docker rmi [image id]
其中“[image id]”替換為具體的鏡像“image id”
鏡像刪除時不能有該鏡像的容器存在,無論是運行中的還是停止的
啟動鏡像成容器
在命令行模式下鍵入以下命令
$ docker run -it --rm -p 8888:8080 tomcat:latest
其中“-it”代表開啟交互功能,即容器內(nèi)tomcat啟動日志你將能看到。
其中“—rm”代表當啟動的容器停止后自動刪除該容器(不是鏡像哦)。
其中“-p 8888:8080”代表將容器中的8080端口映射到本地機器的8888端口上,即我們可以通過localhost:8888端口訪問到tomcat,甚至我可以改變本地端口來啟動多個tomcat容器。
最后的“tomcat:latest”代表啟動的容器名稱及其版本標簽。
還有很多其他的docker run的參數(shù)請查看docker官網(wǎng)-文檔-run
該條啟動命令可以在Docker Hub上該鏡像的詳細說明中查看,其中會有多種啟動方式說明
[圖片上傳失敗...(image-fc87c0-1585114170564)]
查看運行中的容器
在命令行模式下鍵入以下命令
$ docker ps
[圖片上傳失敗...(image-e6f58a-1585114170564)]
其中“container id”為容器編號,下面的操作將與它相關(guān)
進入運行中的容器內(nèi)部執(zhí)行命令
有時容器的設置并不能滿足我們的需要,比如,我們可能需要增加一個tomcat用戶,或是配置一個數(shù)據(jù)源連接池等,需要進入容器中修改參數(shù),下面我們就介紹下如何進入容器中。
在命令行模式下鍵入以下命令
$ docker exec -it [container id] /bin/bash
就可以進入容器內(nèi)的命令行模式,其中“[container id]”在執(zhí)行時替換為具體容器的container id
[圖片上傳失敗...(image-13f143-1585114170564)]
停止運行中的容器
在命令行模式下鍵入以下命令
$ docker stop [container id]
其中“[container id]”在執(zhí)行時替換為具體容器的“container id”
查看停止狀態(tài)的容器
在命令行模式下鍵入以下命令
$ docker ps -a
啟動停止狀態(tài)的容器
在命令行模式下鍵入以下命令
$ docker start [container id]
其中“[container id]”在執(zhí)行時替換為具體容器的“container id”
刪除的容器
在命令行模式下鍵入以下命令
$ docker rm [container id]
其中“[container id]”在執(zhí)行時替換為具體容器的“container id”
提交容器成為新的鏡像
在命令行模式下鍵入以下命令
$ docker commit [container id] [your name]/[image name]:[tag]
其中“[container id]”在執(zhí)行時替換為具體容器的“container id”
其中“[your name]”在執(zhí)行時替換為你的名字,方便大家知道是你做的鏡像
其中“[image name]”在執(zhí)行時替換為你希望的鏡像名稱
其中“[tag]”在執(zhí)行時替換為你的鏡像的版本,也可以不指定
詳細“docker commit”說明請參考docker官網(wǎng)-文檔-commit
導出鏡像
在命令行模式下鍵入以下命令
docker save [image name] > [local file name].tar
其中“[container id]”在執(zhí)行時替換為具體鏡像的名字
其中“[local file name]”在執(zhí)行時替換為你想取的本地文件名
載入鏡像
在命令行模式下鍵入以下命令
$ docker load < [local file full name]
其中“[local file full name]” 在執(zhí)行時替換為本地文件名(含擴展名)