在前面的例子中,我們從下載鏡像,啟動(dòng)容器良哲,在容器中輸入命令來(lái)運(yùn)行程序,這些命令都是手工一條條往里輸入的系任,無(wú)法重復(fù)利用,而且效率很低虐块。所以就需要一 種文件或腳本俩滥,我們把想執(zhí)行的操作以命令的方式寫(xiě)入其中,然后讓docker讀取并分析贺奠、執(zhí)行举农,那么重復(fù)構(gòu)建、更新將變得很方便敞嗡,所以Dockerfile就此誕生了。
常用參數(shù):
FROM命令航背。用法喉悴,F(xiàn)ROM?<image>:<tag>。FROM命令告訴docker我們構(gòu)建的鏡像是以哪個(gè)(發(fā)行版)鏡像為基礎(chǔ)的
RUN命令玖媚。用法RUN?<command>箕肃。RUN 后面接要執(zhí)行的命令,比如今魔,我們想在鏡像中安裝vim勺像,只需在Dockfile中寫(xiě)入RUN yum install -y vim
ENV命令。用法,ENV??<value>错森。ENV命令主要用于設(shè)置容器運(yùn)行時(shí)的環(huán)境變量
ADD命令吟宦。用法,ADD??<dest>涩维。ADD主要用于將宿主機(jī)中的文件添加到鏡像中
首先建一個(gè)目錄構(gòu)建我們的環(huán)境殃姓。
mkdirtest/web
上傳tomcat和jdk到該目錄下。
[root@wls12c web]$lsapache-tomcat-7.0.70.tar.gz? jdk-7u80-linux-x64.tar.gz
編輯Dockerfile
vim Dockerfile
#pull down centos image
FROM centos
MAINTAINER test@test.com
#copy jdk and tomcat into image
ADD ./apache-tomcat-7.0.70.tar.gz /root
ADD ./jdk-7u80-linux-x64.tar.gz /root
#set environment variable
ENV JAVA_HOME /root/jdk1.7.0_80
ENV PATH $JAVA_HOME/bin:$PATH#defineentry point which will be run first when the container starts upENTRYPOINT /root/apache-tomcat-7.0.70/bin/startup.sh&&tail-F /root/apache-tomcat-7.0.70/logs/catalina.out
構(gòu)建鏡像
[root@wls12c web]$ docker build -t keven/centos:tomcat-centos --rm=true .
Sending build context to Docker daemon 470.4 MB
Sending build context to Docker daemon
Step 0 : FROM centos
---> d83a55af4e75
Step 1 : MAINTAINER test@test.com
---> Runningin 955747d64da5
---> 1619dc8f6d58
................70/logs/catalina.out
---> Runningin fe48acf12d70
---> 52076383f11b
Removing intermediate container fe48acf12d70
Successfully built 52076383f11b
-t選擇指定生成鏡像的用戶名瓦阐,倉(cāng)庫(kù)名和tag
--rm=true指定在生成鏡像過(guò)程中刪除中間產(chǎn)生的臨時(shí)容器蜗侈。
查看新產(chǎn)生的鏡像
[root@wls12c web]$ docker images keven/centos
REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? VIRTUAL SIZE
keven/centos? ? ? ? tomcat-centos? ? ? 52076383f11b19minutes ago516.6MB
運(yùn)行鏡像
[root@wls12c web]$ docker run -d -p8090:808052078260fa22aa32126f613a6b64f121e78545ceae01da58c61396968bfafeda3706
-p指定主機(jī)8090端口與容器8080端口進(jìn)行綁定
-d?指定容器運(yùn)行后與當(dāng)前tty分離,后臺(tái)運(yùn)行
5207是鏡像的ID前4位睡蟋。
通過(guò)? http://宿主機(jī)IP:8090,即可看見(jiàn)我們熟悉的tomcat首頁(yè)了踏幻。
另外還有一種自動(dòng)映射主機(jī)端口的啟動(dòng)方法
[root@wls12c web]$ docker run -d -p8080--name myweb520de39869a8c560e5e0cf48fc6022c05ed9f9a145bdafb897767fa468dc24ebfff
[root@wls12c web]$ docker port de38080/tcp ->0.0.0.0:32768[root@wls12c web]$
這樣就要通過(guò)http://宿主機(jī)IP:32768訪問(wèn)了。