亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何查看docker鏡像的dockerfile

如何查看docker鏡像的dockerfile

滄海一幻覺 2019-05-10 07:06:02
如何查看docker鏡像的dockerfile
查看完整描述

3 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

Dockerfile的指令是忽略大小寫的,建議使用大寫,使用 # 作為注釋,每一行只支持一條指令,每條指令可以攜帶多個參數。
Dockerfile的指令根據作用可以分為兩種,構建指令和設置指令。構建指令用于構建image,其指定的操作不會在運行image的容器上執行;設置指令用于設置image的屬性,其指定的操作將在運行image的容器中執行。

(1)FROM(指定基礎image)
構建指令,必須指定且需要在Dockerfile其他指令的前面。后續的指令都依賴于該指令指定的image。FROM指令指定的基礎image可以是官方遠程倉庫中的,也可以位于本地倉庫。
該指令有兩種格式:

[plain] view plaincopy
FROM <image>
指定基礎image為該image的最后修改的版本?;蛘撸?br/>
[plain] view plaincopy
FROM <image>:<tag>
指定基礎image為該image的一個tag版本。

(2)MAINTAINER(用來指定鏡像創建者信息)
構建指令,用于將image的制作者相關的信息寫入到image中。當我們對該image執行docker inspect命令時,輸出中有相應的字段記錄該信息。
格式:

[plain] view plaincopy
MAINTAINER <name>

(3)RUN(安裝軟件用)
構建指令,RUN可以運行任何被基礎image支持的命令。如基礎image選擇了ubuntu,那么軟件管理部分只能使用ubuntu的命令。
該指令有兩種格式:

[plain] view plaincopy
RUN <command> (the command is run in a shell - `/bin/sh -c`)
RUN ["executable", "param1", "param2" ... ] (exec form)

(4)CMD(設置container啟動時執行的操作)
設置指令,用于container啟動時指定的操作。該操作可以是執行自定義腳本,也可以是執行系統命令。該指令只能在文件中存在一次,如果有多個,則只執行最后一條。
該指令有三種格式:

[plain] view plaincopy
CMD ["executable","param1","param2"] (like an exec, this is the preferred form)
CMD command param1 param2 (as a shell)
當Dockerfile指定了ENTRYPOINT,那么使用下面的格式:

[plain] view plaincopy
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
ENTRYPOINT指定的是一個可執行的腳本或者程序的路徑,該指定的腳本或者程序將會以param1和param2作為參數執行。所以如果CMD指令使用上面的形式,那么Dockerfile中必須要有配套的ENTRYPOINT。

(5)ENTRYPOINT(設置container啟動時執行的操作)
設置指令,指定容器啟動時執行的命令,可以多次設置,但是只有最后一個有效。
兩種格式:

[plain] view plaincopy
ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)
ENTRYPOINT command param1 param2 (as a shell)
該指令的使用分為兩種情況,一種是獨自使用,另一種和CMD指令配合使用。
當獨自使用時,如果你還使用了CMD命令且CMD是一個完整的可執行的命令,那么CMD指令和ENTRYPOINT會互相覆蓋只有最后一個CMD或者ENTRYPOINT有效。

[plain] view plaincopy
# CMD指令將不會被執行,只有ENTRYPOINT指令被執行
CMD echo “Hello, World!”
ENTRYPOINT ls -l
另一種用法和CMD指令配合使用來指定ENTRYPOINT的默認參數,這時CMD指令不是一個完整的可執行命令,僅僅是參數部分;ENTRYPOINT指令只能使用JSON方式指定執行命令,而不能指定參數。





查看完整回答
反對 回復 2019-05-11
  • 3 回答
  • 0 關注
  • 5977 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號