凡是編寫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 withfrom
prior to commit"。
cmd echo "before from"
from nginx
cmd /bin/bash
3.from
可以在乙個dockerfile
**現多次,以建立多個映象或者將當前構建作為另乙個構建的依賴。
4.通過向from指令新增as name,可以選擇為新生成階段指定名稱。該名稱可以在後續的from
和copy --from=
指令中使用,以引用在此階段中構建的映象。
示例:詳細應用示例會在系列博文中展示。
from nginx as firstnginx
cmd /bin/bash
5.tag
或者digest
的值是可選的。如果省略其中任何乙個,則預設情況下,構建器使用latest
作為預設值。如果找不到tag
的值,則構建器返回錯誤。
6.--platform
可以用於指定映象的平台,用來處理那些支援多平台的映象。例如:linux/amd64
、linux/arm64
或windows/amd64
。預設情況下,使用生產請求的平台。全域性生成引數可用於此標誌的值,例如:自動平台引數允許您強制乙個階段到本機構建平台(--platform=$buildplatform
),並使用它交叉編譯到階段內部的目標平台。
示例:nginx:latest
作為基礎映象,指定--platform=linux/arm64
進行映象構建。
7.from
與arg
上文(2)中曾提到過,dockerfile
必須以from
指令開始(除arg
指令之外),下面來看下from
與arg
的關係。
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是目前比較成熟的一套網際網路應用程式的...