dockerfile demo

dockerfile demo


什麼是 Dockerfile

一個構建鏡像的文本文件,包含了一條條構建鏡像所需的指令,類似腳本。

dockerfile 指令

• FROM          #需定製的鏡像,定製的鏡像都是基於 FROM 的鏡像,例如:FROM ubuntu:latest,後續的操作都是基於 ubuntu:latest。
# 格式爲 FROM <image>或FROM <image>:<tag>。
#第一條指令必須爲FROM,如果需創建多個鏡像,可以使用多個FROM

• MAINTAINER    #指定維護者信息。
#格式爲 MAINTAINER <name>

• RUN 			#執行指定的的命令,並提交爲新的鏡像。
#格式爲 RUN <command> 或 RUN ["executable", "param1", "param2"]。

• CMD			#指定啓動容器時執行的命令,如果用戶啓動容器時候指定了運行的命令,會覆蓋掉 CMD 指定的命令。
				#每個 Dockerfile 只能有一條 CMD 命令。如果指定了多條命令,只有最後一條會被執行。
#三種格式
#CMD ["executable","param1","param2"] 使用 exec 執行,推薦方式;
#CMD command param1 param2 在 /bin/sh 中執行,提供給需要交互的應用;
#CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認參數;

• EXPOSE		#將容器需要暴露的端口號告訴docker,啓動容器是需要通過-P參數,docker主機會自動分配一個端口轉發到指定端口。
#格式爲EXPOSE <port> [<port>...]


• ENV 			#設定一個環境變量,後續會被RUN指令使用,並在容器運行時保持。
#格式爲 ENV <key> <value>

• ADD 			#該命令將複製指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目錄的一個相對路徑;也可以是一個 URL;還可以是一個 tar 文件(自動解壓爲目錄)。
#格式爲 ADD <src> <dest>。

• COPY          #複製本地主機的 <src>(爲 Dockerfile 所在目錄的相對路徑)到容器中的 <dest>。
#格式爲 COPY <src> <dest>。


當使用本地目錄爲源目錄時,推薦使用 COPY。
• ENTRYPOINT	#配置容器啓動後執行的命令,並且不可被 docker run 提供的參數覆蓋。每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效。

#兩種格式:
#ENTRYPOINT ["executable", "param1", "param2"]
#ENTRYPOINT command param1 param2(shell中執行)。

• VOLUME		#創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放數據庫和需要保持的數據等。
#格式爲 VOLUME ["/data"]。

• USER			#指定運行容器時的用戶名或 UID,後續的 RUN 也會使用指定用戶。當服務不需要管理員權限時,可以通過該命令指定運行用戶。並且可以在之前創建所需要的用戶,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要臨時獲取管理員權限可以使用 gosu,而不推薦 sudo。
#格式爲 USER daemon

• WORKDIR		#爲後續的 RUN、CMD、ENTRYPOINT 指定配置工作目錄。可以使用多個 WORKDIR 指令,後續命令如果參數是相對路徑,則會基於之前命令指定的路徑。如:
WORKDIR /lu
WORKDIR mi
WORKDIR ya
RUN pwd
最終會路徑爲 /lu/mi/ya
#格式爲 WORKDIR /path/to/workdir。


• ONBUILD		#配置當所有的鏡像作爲其他新創建鏡像的的基礎竟像時,所執行的指令。
#格式爲 ONBUILD [INSTRUCTION]。

編寫完dockerfile之後,可通過docker build命令來創建鏡像。

build go demo鏡像

基於共golang:1.13的demo鏡像
dockerfile

FROM golang:1.13
WORKDIR /app
COPY hello.go app.go
RUN go build app.go
CMD ./app

路徑如下 :
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yu51J0ZX-1586167515923)(./1586157633402.png)]

go build 構建
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zFXX7VIX-1586167515924)(./1586157876580.png)]

run
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hh4xdAcN-1586167515926)(./1586157915696.png)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章