跟我一起學docker(八)--Dockerfile

IT人故事會發表於2018-07-29

1.利用Dockerfile建立映象

什麼是Dockerfile?

定義:Dockerfile是一個文字格式的配置檔案,使用者可以使用Dockerfile快速建立自定義映象。

基本結構:

Dockerfile由一行行的命令語句組成。並且支援以#開頭的註釋行。一般Dockerfile分為四個部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時的指令。

Dockerfile示例:

#This is a Dockerfile

#Author:liming

#第一行必須指定基礎映象

FROM ubuntu

#維護者資訊

MAINTAINER <394498036@qq.com>

#映象的操作指令

RUN apt-get update

RUN apt-getinstall -y nginx

RUN echo “\ndaemonoff:” >> /etc/nginx/nginx.conf

#容器啟動時的指令

CMD /usr/sbin/nginx

操作一下:

首先建立目錄testDockerfile並進入

跟我一起學docker(八)--Dockerfile

vi Dockerfile

跟我一起學docker(八)--Dockerfile

建立命令:

docker build –t =“<映象名稱>”.

注意:執行此命令要和Dockerfile在同級目錄,檔名稱必須為Dockerfile。命令後面的”.”表示在當前目錄下執行。


2.Dockerfile指令集

1 FROM


第一條指令必須為FROM指令,用於指定基礎映象。

2 MAINTAINER

格式為 MAINTAINER ,指定維護者資訊。

3 RUN

格式為 RUN ,會在shell終端執行命令。

4 EXPOSE

格式為 EXPOSE [ ...],容器需要暴露的埠號。映象啟動可以通過 –P 或 -p 進行埠對映的繫結。

5 ENV

格式為 ENV 。

指定一個環境變數,可以被後續的RUN引用,並且在容器中記錄該環境變數。

6 ADD

格式為 ADD 。

該命令將複製指定的到容器中的。其中可以是Dockerfile所在目錄的一個相對路徑;也可以是url,還可以是tar檔案(自動解壓)。

7 VOLUME

格式為 VOLUME [path]。

建立一個可以從本地主機或其他容器掛載點,一般用來存放需要保持的資料。

8 USER

格式為 USER 。

指定執行容器時的使用者名稱,後續的RUN也會指定該使用者。

9 WORKDIR

格式為 WORKDIR 。

指定工作空間,執行完WORKDIR後,後續執行的RUN、CMD、ENTRYPOINT都會在此目錄下執行。

10 COPY

格式為 COPY 。

複製本地主機的到容器中的,目標路徑不存在時,會自動建立。

當使用本地目錄為源目錄時,推薦使用COPY。

11 CMD

推薦格式為 CMD [“executable”,”param1”,”param2”] 。

作為ENTRYPOINT的預設引數為 CMD[”param1”,”param2”]。

指定容器的啟動命令,每個Dockerfile只能有一條CMD命令,如果指定多條,只有最後一條會執行。

使用者啟動容器時指定執行命令,會覆蓋掉Dockerfile中的CMD命令。

12 ENTRYPOINT

格式為 ENTRYPOINT [“executable”,”param1”,”param2”]。

配置容器啟動後的命令,可被docker run提供的--entrypoint引數覆蓋。

每個Dockerfile只能有一條ENTRYPOINT命令,如果指定多條,只有最後一條會執行。

跟我一起學docker(八)--Dockerfile
跟我一起學docker(八)--Dockerfile

3.容器內安裝工具的方法

跟我一起學docker(八)--Dockerfile


4.Dockerfile最佳實踐

1 錯誤定位

每個Dockerfile的指令可以生成新的一層映象,如果通過Dockerfile建立映象出錯,可以根據出錯所在步驟的上一層啟動容器,然後手工執行出錯層的命令,以達到除錯目的。

2 好的使用習慣

http://dockone.io/article/131

http://dockone.io/article/132

個人主頁:idig8.com

往期docker學習:

認識docker

核心概念和安裝

映象的常用操作

容器的基本操作

倉庫

資料卷


跟我一起學docker(八)--Dockerfile


相關文章