Docker簡介:
可以理解成一個“應(yīng)用程序化的虛擬機(jī)”疑俭。我們?nèi)绻?strong>虛擬機(jī)比喻成公寓的一個個房間(公寓每個房間都有浴室(IO))遥巴,docker就相當(dāng)于太空艙,所有人共享大廳悴务,浴室(系統(tǒng)IO)等資源睹限,但是每個人又有自己的房間(各自的項(xiàng)目環(huán)境)譬猫,互不影響。Docker可以節(jié)省大量的磁盤空間以及其他系統(tǒng)資源羡疗,運(yùn)行起來也快得多染服。
應(yīng)用:
實(shí)現(xiàn)操作:比如說我的JAVA程序需要配置JAVA JDK,Tomcat等環(huán)境叨恨,我可以把我的環(huán)境打包成一個簡單的鏡像柳刮。鏡像是從docker官網(wǎng)倉庫上Push下來的一個Liunx系統(tǒng),我可以將鏡像打開(轉(zhuǎn)化為容器)痒钝,然后在這上面用命令行秉颗,或者用構(gòu)建文檔在上面添加我的JDK等,最后又可以將容器轉(zhuǎn)化成鏡像送矩,保存在dockerhub倉庫里(功能類似GitHub倉庫)蚕甥。總結(jié)起來就是,我做成了一個(迷你linux+ 項(xiàng)目環(huán)境+ 項(xiàng)目的Docker鏡像)保存在DockerHub栋荸。
操作用途:Github可以和其他工具搭配做成持續(xù)集成菇怀,docker可以用于持續(xù)交付。例如一個測試蒸其,用戶等需要使用我的軟件或者服務(wù)器敏释,他可以下載一個Docker,把我的鏡像Push下來摸袁,我的運(yùn)行環(huán)境已經(jīng)部署好了俩檬,他直接用docker打開就可以運(yùn)行我部署在上面的軟件了设预。不需要在主機(jī)上配置其他的環(huán)境邪蛔。
交付功能:
當(dāng)我的軟件或者項(xiàng)目或者環(huán)境有改動皆疹,用戶或者測試師只要基于以前的鏡像push最新的功能模塊就可以運(yùn)行新版軟件了。因此蝶怔,docker可以理解是用作持續(xù)交付高延展奶浦,可伸縮性強(qiáng)的項(xiàng)目工具。
● Docker可以通過端口映射踢星,并與主機(jī)共享IP
● Docke是無狀態(tài)化的澳叉,一般數(shù)據(jù)庫不建議放在容器里,防止容器中斷沐悦,迭代成洗,等情況丟失數(shù)據(jù)
目前使用原因:
● 不同環(huán)境沙盒化:比如我的系統(tǒng)同時需要JAVA7 與JAAV8;
● 快速開發(fā)交付藏否,環(huán)境配置
● 服務(wù)器遷移
構(gòu)建:
對于新手而言瓶殃,個人建議自己先pull一個原始的ubuntu鏡像自己構(gòu)建,當(dāng)然用Dockfile也是可以的副签,不過自己從0開始構(gòu)建當(dāng)然會更熟悉一點(diǎn)遥椿。
步驟:
● 先pull一ubuntu系統(tǒng):docker pull ubuntu
系統(tǒng)會自動選擇最新鏡像版本
● 安裝JAVA 1.8:安裝ppa:
● 輸入命令:sudo add-apt-repository ppa:webupd8team/java
● 輸入命令:sudo apt-get update
安裝jdk
● 輸入命令:sudo apt-get install oracle-java8-installer
驗(yàn)證安裝是否成功:
● java -version
JAVA 環(huán)境變量:
編輯/etc/profile文件基矮,在文件末尾添加如下3行:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle(注意:java-8-oracle以文件目錄名為準(zhǔn))
export JRE_HOME=/usr/lib/jvm/java-8-oracle/jre
export PATH=PATH
保存,執(zhí)行:
source /etc/profile 讓文件生效
打包:
docker commit 容器ID 打包后鏡像名:版本號
docker commit -a "runoob.com" -m "my apache" 容器名稱或id 打包的鏡像名稱:標(biāo)簽
OPTIONS說明:
-a :提交的鏡像作者冠场;
-c :使用Dockerfile指令來創(chuàng)建鏡像家浇;
-m :提交時的說明文字;
-p :在commit時碴裙,將容器暫停蓝谨。
使用docker tag 命令為本地鏡像添加新的標(biāo)簽
改變鏡像標(biāo)簽: docker tag image1:latest(本地鏡像)rhl/image1:latest(新添加的鏡像)
最好的方法是docker commit --help 將會打印出命令行參數(shù)和解釋,博客的內(nèi)容各種都有
啟動和部署:
● 查看自己所有的鏡像 :docker images 將會出現(xiàn)自己的鏡像名和ID
● 啟動: docker run -it -v /usr/data:/data -p 80:80 restart=always [鏡像ID] bash
參數(shù)介紹:
● -v 服務(wù)器存放mongdb的文件目錄:docker容器中存放 的目錄青团,做出相應(yīng)的映射,將data數(shù)據(jù)存儲在服務(wù)器中
● -P 服務(wù)器端口的映射