Dockerfile FROM指令 語法解析

2021-10-10 06:30:45 字數 3279 閱讀 1086

凡是編寫dockerfile,幾乎開始都會是from命令,它決定了dockerfile構建出的映象為何物,本文就來了解一下from的語法、語義以及對應的示例。

語法

from [--platform=] [as ]

from [--platform=] [:] [as ]

from [--platform=] [@] [as ]

語義1.from指令開始乙個新的構建階段,設定後續構建依賴的基礎映象,dockerfile必須以from開始。映象可以是任意有效映象。

示例:在nginx:latest映象基礎上,直接建立乙個新的映象。

2.dockerfile必須以from指令開始(除arg指令之外),否則會出現"please provide a source image withfromprior to commit"。

cmd echo "before from"

from nginx

cmd /bin/bash

3.from可以在乙個dockerfile**現多次,以建立多個映象或者將當前構建作為另乙個構建的依賴。

4.通過向from指令新增as name,可以選擇為新生成階段指定名稱。該名稱可以在後續的fromcopy --from=指令中使用,以引用在此階段中構建的映象。

示例:詳細應用示例會在系列博文中展示。

from nginx as firstnginx

cmd /bin/bash

5.tag或者digest的值是可選的。如果省略其中任何乙個,則預設情況下,構建器使用latest作為預設值。如果找不到tag的值,則構建器返回錯誤。

6.--platform可以用於指定映象的平台,用來處理那些支援多平台的映象。例如:linux/amd64linux/arm64windows/amd64。預設情況下,使用生產請求的平台。全域性生成引數可用於此標誌的值,例如:自動平台引數允許您強制乙個階段到本機構建平台(--platform=$buildplatform),並使用它交叉編譯到階段內部的目標平台。

示例:nginx:latest作為基礎映象,指定--platform=linux/arm64進行映象構建。

7.fromarg

上文(2)中曾提到過,dockerfile必須以from指令開始(除arg指令之外),下面來看下fromarg的關係。

7.1form的引數支援在form之前由arg定義的變數。

示例:在from之前通過arg定義變數ng_version,在from中引用變數。

7.2form之前宣告的arg引數游離在構建階段之外,所以不可以在form之後的任何指令中使用。如果想使用form前宣告的帶有預設值的arg,需要在構建階段通過arg宣告沒有值的同名引數。

總結from指令應用非常簡單,但一定要注意文中羅列的7項內容,避免在實際應用中,由於失誤等原因造成不必要的麻煩,本文演示的示例都很簡單,都是基於映象直接建立新的映象,但如何使用dockerfile構建映象基本也就是這樣了。

若文中存在錯誤和不足,歡迎指正!

是指什麼 cpu是指什麼

cpu是 處理器。是計算機的運算器與控制器。cpu內部結構大概可以分為控制單元 運算單元 儲存單元和時鐘等幾個主要部分 運算器是計算機對資料進行加工處理的中心,它主要由算術邏輯部件 alu arithmeticandlogicunit 暫存器組和狀態暫存器組成 控制器是計算機的控制中心,它決定了計算...

ypedef struct LNode結構指標

typedef struct lnodelnode,linklist lnode和 linklist 是與前面的typedef配合起來使用的,意思是給你宣告的結構體起乙個別名叫lnode,同時起乙個指標別名叫linklist,以後就可以用以下方式宣告變數 lnode a 宣告了乙個struct ln...

Android RESTful API 設計指南

網路應用程式,分為前端和後端兩個部分。當前的發展趨勢,就是前端裝置層出不窮 手機 平板 桌面電腦 其他專用裝置 因此,必須有一種統一的機制,方便不同的前端裝置與後端進行通訊。這導致api構架的流行,甚至出現 api first 的設計思想。restful api是目前比較成熟的一套網際網路應用程式的...