今天利用dockerfile創(chuàng)建一下docker鏡像。相比手動(dòng)的處理會(huì)方便很多味滞。
1.準(zhǔn)備工作
將你所需的安裝包放到你的宿主機(jī)一個(gè)目錄下隔披,我們以創(chuàng)建tomcat鏡像為例:
需要準(zhǔn)備jdk和tomcat的安裝包
我這準(zhǔn)備了jdk1.6和tomcat7
2.創(chuàng)建Dockerfile文件
在安裝包目錄下創(chuàng)建Dockerfile文件
文件內(nèi)容如下:
#pull down centos image
FROM centos
MAINTAINER blueyangdi@163.com
#copy jdk and tomcat into image,tar aoto unzip
ADD ./apache-tomcat-7.0.73.tar.gz /app
ADD ./jdk1.6.0_31.tar /app
#set environment variable
ENV JAVA_HOME /app/jdk1.6.0_31
ENV PATH $JAVA_HOME/bin:$PATH
#set EXPOSE
EXPOSE 8080
#set permissions
RUN chmod a+x /app/apache-tomcat-7.0.73/bin/*.sh
#define entry point which will be run first when the container starts up
CMD [ "/app/apache-tomcat-7.0.73/bin/catalina.sh", "run" ]
解釋一下
FROM:是獲取到一個(gè)我們需要制作鏡像的基礎(chǔ)鏡像。
MAINTAINER: 是制作者信息
ADD: 將宿主機(jī)的安裝包傳遞到docker容器中饿这,第一個(gè)參數(shù)是要傳入的文件菩颖, 第二個(gè)參數(shù)是容器中的目錄
注意样漆,ADD命令是會(huì)自動(dòng)的識(shí)別tar包的,將會(huì)自動(dòng)的解壓縮
ENV:設(shè)置容器的環(huán)境變量
EXPOSE:設(shè)置容器對(duì)外開放的端口
RUN:執(zhí)行命令
CMD:將tomcat啟動(dòng)晦闰。
具體的Dockerfile關(guān)鍵字可以看我另外一篇文章有詳細(xì)的介紹
創(chuàng)建完Dockerfile氛濒,開始構(gòu)建我們的鏡像
3.構(gòu)建鏡像
docker build -t diditomcat .
-t 為鏡像取個(gè)名字
最后邊的.的意思是執(zhí)行當(dāng)前目錄下的Dockerfile文件。
執(zhí)行完成后鹅髓,如下提示鏡像構(gòu)建成功
4.啟動(dòng)鏡像舞竿,品嘗一下
[root@localhost app]# docker run -d -p 8011:8080 a4b9d2d30d51
瀏覽器訪問宿主機(jī)的8011端口,就可以訪問到我們的tomcat了窿冯。
5.部署自己的web應(yīng)用
我們都知道docker是可以掛載宿主機(jī)的目錄的骗奖,我們將我們的web應(yīng)用war包放到宿主機(jī)掛載的目錄下。
例如我寫了一個(gè)web應(yīng)用的war包醒串,放到
/app/webapp 目錄下
6 運(yùn)行docker容器
docker run -d -p 8088:8080 --privileged=true -v /app/webapp:/app/apache-tomcat-7.0.73/webapps/ a4b9d2d30d514
這次的命令中我們添加了--privileged=true參數(shù)执桌,意思是給宿主機(jī)的目錄授權(quán),要不然容器是無權(quán)限訪問此目錄芜赌。
-v仰挣,將宿主機(jī)的目錄/app/webapp掛載到容器的/app/apache-tomcat-7.0.73/webapps/目錄下
7驗(yàn)證
訪問以下宿主機(jī)的8088端口吧。
改一下宿主機(jī)掛載目錄下的index.jsp 看看是不是變了缠沈。