1. 程式人生 > >Docker(二):Dockerfile介紹

Docker(二):Dockerfile介紹

 

 

Dockerfile 概念

Dockerfile 是一個文字檔案,其內包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。有了 Dockerfile,當我們需要定製自己額外的需求時,只需在 Dockerfile 上新增或者修改指令,重新生成 image 即可,省去了敲命令的麻煩。

 Dockerfile 分為四部分:基礎映象資訊、維護者資訊、映象操作指令、容器啟動執行指令。一開始必須要指明所基於的映象名稱,接下來一般會說明維護者資訊;後面則是映象操作指令,例如 RUN 指令。每執行一條RUN 指令,映象新增新的一層,並提交;最後是 CMD 指令,來指明執行容器時的操作命令。

# 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

 

構建映象

將當前目錄做為構建上下文時,可以像下面這樣使用docker build命令構建映象:

docker build .

 

在構建上下文中使用的 Dockerfile 檔案,是一個構建指令檔案。為了提高構建效能,可以通過.dockerignore檔案排除上下文目錄下不需要的檔案和目錄。

Dockerfile 一般位於構建上下文的根目錄下,也可以通過-f指定該檔案的位置:

docker build -f /path/to/a/Dockerfile .

 

構建時,還可以通過-t

引數指定構建成映象的倉庫、標籤。

docker build -t nginx/v3 .

 

如果存在多個倉庫下,或使用多個映象標籤,就可以使用多個-t引數:

docker build -t nginx/v3:1.0.2 -t nginx/v3:latest .

 

示例

mkdir mynginx
cd mynginx
vi Dockerfile


FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

#構建
docker build -t nginx:v1 .


docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
nginx                           v1                  8c92471de2cc        6 minutes ago       108.6 MB


#執行容器
docker run  --name docker_nginx_v1   -d -p 10088:80 nginx:v1

#修改容器內容
docker exec -it docker_nginx_v1 bash
[email protected]:/# echo '<h1>Hello, Docker neo!</h1>' > /usr/share/nginx/html/index.html
[email protected]:/# exit