在前面的例子中,我們從下載鏡像,啟動容器,在容器中輸入命令來運行程序,這些命令都是手工一條條往里輸入的,無法重復利用,而且效率很低。所以就需要一 種文件或腳本,我們把想執行的操作以命令的方式寫入其中,然后讓docker讀取并分析、執行,那么重復構建、更新將變得很方便,所以Dockerfile就此誕生了。
常用參數:
FROM命令。用法,FROM <image>:<tag>。FROM命令告訴docker我們構建的鏡像是以哪個(發行版)鏡像為基礎的
RUN命令。用法RUN <command>。RUN 后面接要執行的命令,比如,我們想在鏡像中安裝vim,只需在Dockfile中寫入RUN yum install -y vim
ENV命令。用法,ENV <key> <value>。ENV命令主要用于設置容器運行時的環境變量
ADD命令。用法,ADD <src> <dest>。ADD主要用于將宿主機中的文件添加到鏡像中
首先建一個目錄構建我們的環境。
1
|
mkdir test /web |
上傳tomcat和jdk到該目錄下。
1
2
|
[root@wls12c web]$ ls apache-tomcat-7.0.70. tar .gz jdk-7u80-linux-x64. tar .gz |
編輯Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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 #define entry point which will be run first when the container starts up ENTRYPOINT /root/apache-tomcat-7 .0.70 /bin/startup .sh && tail -F /root/apache-tomcat-7 .0.70 /logs/catalina .out |
構建鏡像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[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 ---> Running in 955747d64da5 ---> 1619dc8f6d58 ................ 70 /logs/catalina .out ---> Running in fe48acf12d70 ---> 52076383f11b Removing intermediate container fe48acf12d70 Successfully built 52076383f11b |
-t選擇指定生成鏡像的用戶名,倉庫名和tag
--rm=true指定在生成鏡像過程中刪除中間產生的臨時容器。
查看新產生的鏡像
1
2
3
|
[root@wls12c web]$ docker images keven /centos REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE keven /centos tomcat-centos 52076383f11b 19 minutes ago 516.6 MB |
運行鏡像
1
2
|
[root@wls12c web]$ docker run -d -p 8090:8080 5207 8260fa22aa32126f613a6b64f121e78545ceae01da58c61396968bfafeda3706 |
-p指定主機80端口與容器8080端口進行綁定
-d 指定容器運行后與當前tty分離,后臺運行
5207是鏡像的ID前4位。
通過 http://宿主機IP:8090,即可看見我們熟悉的tomcat首頁了。
另外還有一種自動映射主機端口的啟動方法
1
2
3
4
5
|
[root@wls12c web]$ docker run -d -p 8080 --name myweb 520 de39869a8c560e5e0cf48fc6022c05ed9f9a145bdafb897767fa468dc24ebfff [root@wls12c web]$ docker port de3 8080 /tcp -> 0.0.0.0:32768 [root@wls12c web]$ |
這樣就要通過http://宿主機IP:32768訪問了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/zydev/p/5804289.html