Dockerfile 配置檔案詳解

2021-12-30 01:47:20 字數 1771 閱讀 8055

docker 可以通過讀取 dockerfile 配置檔案自動生成映象,也可以直接通過 docker 命令或 docker pull 命令生成映象。

dockerfile解決了自動化的問題。使用docker build命令即可執行檔案中的所有命令,減少了映象和容器的建立過程,簡化了部署。

dockerfile 是乙個文字文件,其中包含使用者可以在命令列呼叫以組裝映象的所有命令。

使用 docker build 使用者可以建立乙個自動構建,用指定目錄下的 dockerfile 構建映象。構建由 docker 守護程式執行,而不是由 cli 執行。構建過程所做的第一件事是將整個上下文(遞迴地)傳送到守護程序。在大多數情況下,最好以空目錄作為上下文,並將 dockerfile 儲存在該目錄中。也可以使用該 -f 標誌指向檔案系統中任何位置的dockerfile。

$ docker build . #用當前目錄下的 dockerfile 構建映象

$ docker build -f /path/to/a/dockerfile . # 用/path/to/a/dockerfile 構建映象到當前目錄中dockerfile 支援的命令如下:

instruction argument

指令不區分大小寫。但是,命名約定為全部大寫。

所有 dockerfile 都必須以 from 命令開始。 from 命令指定映象基於哪個基礎映象建立,接下來的命令會基於這個基礎映象。from 命令可以多次使用,表示會建立多個映象。

例如:from ubuntu 表示新的映象將基於 ubuntu 這個基礎映象來構建。

設定該映象的作者。語法如下:

maintainer

在shell或者exec的環境下執行的命令。run指令會在新建立的映象上新增新的層面,接下來提交的結果用在dockerfile的下一條指令中。語法如下:

run command

複製檔案指令。它有兩個引數和。destination是容器內的路徑。source可以是url或者是啟動配置上下文中的乙個檔案。語法如下:

add src destination

提供了容器預設的執行命令。 dockerfile只允許使用一次cmd指令。 使用多個cmd會抵消之前所有的指令,只有最後乙個指令生效。 cmd有三種形式:

cmd ["executable","param1","param2"]

cmd ["param1","param2"]

cmd command param1 param2指定容器在執行時監聽的埠。語法如下:

expose port;

配置給容器乙個可執行的命令,這意味著在每次使用映象建立容器時乙個特定的應用程式可以被設定為預設程式。同時也意味著該映象每次被呼叫時僅能執行指定的應用。類似於cmd,docker只允許乙個entrypoint,多個entrypoint會抵消之前所有的指令,只執行最後的entrypoint指令。語法如下:

entrypoint ["executable", "param1","param2"]

entrypoint command param1 param2指定run、cmd與entrypoint命令的工作目錄。語法如下:

workdir /path/to/workdir

設定環境變數。它們使用鍵值對,增加執行程式的靈活性。語法如下:

env

映象正在執行時設定乙個uid。語法如下:

user

授權訪問從容器內到主機上的目錄。語法如下:

volume ["/data"]

.dockerignore 檔案新增到上下文目錄,可以排除檔案和目錄。

svnserve配置檔案詳析

svnserve是svn自帶的乙個輕型伺服器,客戶端通過使用以svn 或svn ssh 為字首的url來訪問svnserve伺服器,實現遠端訪問svn版本庫。svnserve可以通過配置檔案來設定使用者和口令,以及按路徑控制版本庫訪問許可權。本文詳細分析了svnserve配置檔案格式,並說明如何使用...

xml mysql配置詳解 xml配置檔案詳解

1 bean的基本屬性配置 注意 在整合struts和hibernate框架時,需要將action的scope設為 prototype 可以配置全域性的自動裝配型別,在beans內,設定default autowire 2,團隊協作開發 import標籤 3 bean的繼承 parent屬性 如果c...

linux yum的配置檔案 repo檔案詳解

yum的工作原理並不複雜,每乙個 rpm軟體的頭 header 裡面都會紀錄該軟體的依賴關係,那麼如果可以將該頭的內容紀錄下來並且進行分析,可以知道每個軟體在安裝之前需要額外安裝 哪些基礎軟體。也就是說,在伺服器上面先以分析工具將所有的rpm檔案進行分析,然後將該分析紀錄下來,只要在進行安裝或公升級...