Dockerfile讓你輕輕鬆鬆建立屬於你的鏡像(上)

1、思考❓❔

1.什麼是image鏡像?

<span style="color:rgb(230,3,130);font-size: 20px">docker image</span>java

  • 操做系統硬盤上的一個壓縮文件系統
  • 擁有運行一個服務的整套資源配置信息
  • 相似於**「樣板車」,沒法在馬路上正常行駛(未提供業務**)
  • 給image鏡像**(「樣板車」)**添加各類參數以後, 能夠建立一個容器來提供業務

<br />linux

2.Dockerfile又是什麼呢?

  • 建立docker image鏡像的藍圖(指南)
  • 爲一個建立鏡像的文本文件,有規定的語法和格式要求
  • 須要哪些依賴?
    • 安裝docker的系統(Windows或者Linux)
    • 相關安裝教程可參考做者之前的文章

<br />docker

<br />app

2、建立Dockerfile🔨🔨

  • 建立一個以**「Dockerfile」**命名的文件

<span style="color:rgb(230,3,130);font-size: 20px">1.添加註釋</span>

  • 經過#在命令所在行的上方或下方添加註釋
# 這裏添加註釋(#空格,跟上具體的註釋)
添加命令(命令忽略大小寫,爲了區分,推薦命令使用大寫)

<br />學習

<span style="color:rgb(230,3,130);font-size: 20px">2.FROM💪🏽💪🏽</span>

  • 用於指定base image父鏡像(在哪個鏡像的基礎上,建立新的鏡像)ui

  • 一個Dockerfile文件中必需要有一個FROM指令spa

  • 通常爲Dockerfile文件中的第一個指定操作系統

經常使用格式:code

FROM <父鏡像名>[:<tag版本>]

例如:blog

# 指定父鏡像爲jdk8,操做系統爲alpine
FROM openjdk:8-alpine

<br />

<span style="color:rgb(230,3,130);font-size: 20px">3.LABEL</span>

  • 用於指定image鏡像的元數據信息
  • 爲key-value鍵值對的形式

經常使用格式:

LABEL <key>=<value> <key>=<value> <key>=<value> ...

例如:

# 添加image鏡像的做者信息以及對當前鏡像的功能描述
# a. maintainer和description爲固定形式
# b. LABEL與maintainer之間要有空格
LABEL maintainer="KeYou <keyou100@qq.com>"
LABEL description="This is multi-stage build example."

<br />

<span style="color:rgb(230,3,130);font-size: 20px">4.COPY</span>

  • 用於從宿主機**(Dockerfile文件所在的電腦)**複製文件或目錄到容器中

經常使用格式:

COPY <源文件或者目錄> <容器中的目錄>

例如:

# 複製當前目錄下的Test.java文件到容器/usr/src/myapp/目錄下
# a. 一個路徑加/和不加/, 是有區別的
# 加/, 爲目錄
# 不加/, 爲文件
# b. 若是容器中所指定的目錄不存在, 會自動建立
COPY Test.java /usr/src/myapp/

<br />

<span style="color:rgb(230,3,130);font-size: 20px">5.WORKDIR</span>

  • 用於設置容器的當前工做目錄
  • 相似於Linux中的cd命令
  • 若是指定的目錄路徑不存在,則會自動建立

經常使用格式:

WORKDIR /path/to/workdir

例如:

# 進入容器/usr/src/myapp/目錄中
# myapp目錄不存在,則會自動建立
WORKDIR /usr/src/myapp/

<br />

<span style="color:rgb(230,3,130);font-size: 20px">6.RUN</span>

  • 執行任何linux命令
  • 在image鏡像當前層上方添加新的一層

經常使用格式:

RUN <命令>

例如:

# 執行命令
# 因爲使用了openjdk 8父鏡像,全部有java的安裝環境
# 使用javac 編譯java源文件
RUN javac Test.java

<br />

<br />

3、總結💡💡

  • 本文介紹了Dockerfile文件經常使用的操做指令上部分,下部分會在後續文章中呈現,敬請期待!
  • 對於想學習docker相關知識的讀者, 能夠持續關注做者的文章, 後續會推出更多教程
  • 本文爲可優原創,有不足之處,請多指教!

相關文章
相關標籤/搜索