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

fancybox發表於2019-01-21

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 docker_user@email.com
 
# 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

 

相關文章