Docker(3):Dockerfile介紹及簡單示例
阿新 • • 發佈:2019-01-21
maintain cmd 方法 source mon onf 本地 bubuko author
Dockerfile 概念
Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終創建一個新的鏡像。它們簡化了從頭到尾的流程並極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接著跟隨者各種方法,命令和參數。其產出為一個新的可以用於創建容器的鏡像。
有了 Dockerfile,當我們需要定制自己額外的需求時,只需在 Dockerfile 上添加或者修改指令,重新生成 image 即可,省去了敲命令的麻煩。
Dockerfile 文件格式
# This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1# Author: docker_user # Command format: Instruction [arguments / command] .. # 1、第一行必須指定 基礎鏡像信息 FROM ubuntu # 2、維護者信息 MAINTAINER docker_user [email protected] # 3、鏡像操作指令 RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list RUN apt-get update && apt-get install-y nginx RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf # 4、容器啟動執行指令 CMD /usr/sbin/nginx
Dockerfile 分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令、容器啟動執行指令。一開始必須要指明所基於的鏡像名稱,接下來一般會說明維護者信息;後面則是鏡像操作指令,例如 RUN 指令。每執行一條RUN 指令,鏡像添加新的一層,並提交;最後是 CMD 指令,來指明運行容器時的操作命令。
構建鏡像
docker build 命令會根據 Dockerfile 文件及上下文構建新 Docker 鏡像。構建上下文是指 Dockerfile 所在的本地路徑或一個URL(Git倉庫地址)。構建上下文環境會被遞歸處理,所以構建所指定的路徑還包括了子目錄,而URL還包括了其中指定的子模塊。
將當前目錄做為構建上下文時,可以像下面這樣使用docker build命令構建鏡像:
docker build .
可以通過-f
指定Dockerfile文件的位置:
docker build -f /path/Dockerfile .
可以通過-t
參數指定構建成鏡像的倉庫、標簽。
docker build -t nginx/v3 .
docker build -t nginx/v3:1.0.2 -t nginx/v3:latest .
簡單示例
新建文件Dockerfile,復制以下內容
FROM nginx RUN echo ‘<h1>Hello, Docker!</h1>‘ > /usr/share/nginx/html/index.html
在 Dockerfile 文件所在目錄執行:
docker build -t nginx:v1 .
接下來使用 docker run 命令來啟動容器
docker run --name docker_nginx_v1 -d -p 80:80 nginx:v1
用瀏覽器去訪問這個 nginx 服務器:http://localhost/
修改容器內容
docker exec -it docker_nginx_v1 bash root@3729b97e8226:/# echo ‘<h1>Hello 2</h1>‘ > /usr/share/nginx/html/index.html root@3729b97e8226:/# exit exit
Docker(3):Dockerfile介紹及簡單示例