dockerfile 中的 arg 指令是定義參數(shù)名稱,以及定義其默認值。該默認值可以在構(gòu)建命令 docker build 中用 –build-arg 參數(shù)名=值 來覆蓋。
語法格式
arg 參數(shù)名[=默認值]
dockerfile文件arg指令構(gòu)建參數(shù)和 env 的效果一樣,都是設(shè)置環(huán)境變量。所不同的是,arg 所設(shè)置的構(gòu)建環(huán)境的環(huán)境變量,在將來容器運行時是不會存在這些環(huán)境變量的。但是不要因此就使用 arg 保存密碼之類的信息,因為 docker history 還是可以看到所有值的。
例如dockerfile為變量指定一個默認值:
from busybox
arg user1=someuser
arg buildno=1
…
docker有一組預(yù)設(shè)置的arg變量,不需要在dockerfile中定義就能夠使用它。
http_proxy
http_proxy
https_proxy
https_proxy
ftp_proxy
ftp_proxy
no_proxy
no_proxy
要設(shè)置這些變量,可以在命令行賦值
–build-arg varname=value
在 1.13 之前的版本,要求 –build-arg 中的參數(shù)名,必須在 dockerfile 中用 arg 定義過了,換句話說,就是 –build-arg 指定的參數(shù),必須在 dockerfile 中使用了。如果對應(yīng)參數(shù)沒有被使用,則會報錯退出構(gòu)建。從 1.13 開始,這種嚴(yán)格的限制被放開,不再報錯退出,而是顯示警告信息,并繼續(xù)構(gòu)建。這對于使用 ci 系統(tǒng),用同樣的構(gòu)建流程構(gòu)建不同的 dockerfile 的時候比較有幫助,避免構(gòu)建命令必須根據(jù)每個 dockerfile 的內(nèi)容修改。