1. 程式人生 > >Docker(3):Dockerfile介紹及簡單示例

Docker(3):Dockerfile介紹及簡單示例

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介紹及簡單示例