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