dockerfile建立映象

2021-09-08 07:36:20 字數 2698 閱讀 6770

dockerfile用來快速建立自定義映象

dockerfile分為部分:基礎映象資訊,維護者資訊,映象操作指令,容器啟動時執行指令

一開始必須指明所基於的映象名稱-》維護者資訊-》映象操作指令(run)->執行容器時的操作命令(cmd)

from

功能為指定基礎映象,並且必須是第一條指令。

如果不以任何映象為基礎,那麼寫法為:from scratch。

同時意味著接下來所寫的指令將作為映象的第一層開始

語法:from from :from :三種寫法,其中和是可選項,如果沒有選擇,那麼預設值為latest

run

功能為執行指定的命令

run命令有兩種格式

1. run 2. run ["executable", "param1", "param2"]

第一種後邊直接跟shell命令

在linux作業系統上預設 /bin/sh -c

在windows作業系統上預設 cmd /s /c

第二種是類似於函式呼叫。

可將executable理解成為可執行檔案,後面就是兩個引數。

每條run指令將在當前映象的基礎上執行指定命令,並提交為新的映象

兩種寫法比對:

run /bin/bash -c 'source $home/.bashrc; echo $home

run ["/bin/bash", "-c", "echo hello"]

注意:多行命令不要寫多個run,原因是dockerfile中每乙個指令都會建立一層.

多少個run就構建了多少層映象,會造成映象的臃腫、多層,不僅僅增加了構件部署的時間,還容易出錯。

run書寫時的換行符是\

cmd

功能為容器啟動時要執行的命令

語法有三種寫法

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

2. cmd ["param1","param2"]

3. cmd command param1 param2

第三種比較好理解了,就時shell這種執行方式和寫法

第一種和第二種其實都是可執行檔案加上引數的形式

舉例說明兩種寫法:

cmd [ "sh", "-c", "echo $home"

cmd [ "echo", "$home" ] 補充細節:這裡邊包括引數的一定要用雙引號,就是",不能是單引號。千萬不能寫成單引號。 原因是引數傳遞後,docker解析的是乙個json array

每個dockerfile只能有乙個cmd命令。如果指定了多條指令,只有最後一條會被執行

如果使用者啟動容器時手動指定了執行的命令(作為run的引數),則會覆蓋掉cmd指定的命令

label

功能是為映象指定標籤

語法:label ===...

乙個dockerfile種可以有多個label,如下:

label "com.example.vendor"="acme incorporated"

label com.example.label-with-value="foo"

label version="1.0"

label description="this text illustrates \

that label-values can span multiple lines."

說明:label會繼承基礎映象種的label,如遇到key相同,則值覆蓋

maintainer

指定作者

語法:maintainer

expose

功能為暴漏容器執行時的監聽埠給外部

但是expose只是啟動宣告作用,並不會使容器訪問主機的埠

如果想使得容器與主機的埠有對映關係,必須在容器啟動的時候加上 -p引數

env

功能為設定環境變數,在映象生成過程中會被後續run指令使用,在映象啟動的容器中也會存在

語法有兩種

1. env 2. env =...

兩者的區別就是第一種是一次設定乙個,第二種是一次設定多個

add

乙個複製命令,把檔案複製到景象中。

如果把虛擬機器與容器想象成兩台linux伺服器的話,那麼這個命令就類似於scp,只是scp需要加使用者名稱和密碼的許可權驗證,而add不用。

語法如下:

1. add ... 2. add ["",... ""]

路徑的填寫可以是容器內的絕對路徑,也可以是相對於工作目錄的相對路徑

可以是乙個本地檔案或者是乙個本地壓縮檔案,還可以是乙個url

如果把寫成乙個url,那麼add就類似於wget命令

如以下寫法都是可以的:

add test relativedir/ add test /relativedir add / 盡量不要把寫成乙個資料夾,如果是乙個資料夾了,複製整個目錄的內容,包括檔案系統元資料

copy

看這個名字就知道,又是乙個複製命令

語法如下:

1. copy ... 2. copy ["",... ""]

與add的區別

copy的只能是本地檔案,其他用法一致

posted on 2017-08-05 12:21收藏

dockerfile建立映象 二

entrypoint 兩種格式 entrypoint executable param1 param2 entrypoint command param1 param2 shell中執行 在執行時,可以被 entrypoint引數覆蓋,如docker run entrypoint 每個dockerf...

dockerfile建立映象搭建

第一步 root localhost mount dev cdrom mnt 掛載光碟 root localhost docker load mnt centos 匯入映象 建立工作目錄 root 192 mkdir apache 進入目錄下 root 192 cd apache 編輯vim doc...

Dockerfile自動建立映象

通過dockerfile檔案,可以幫助我們自動建立映象 1.from from 指令用於設定在新映像建立過程期間將使用的容器映像。格式 from 示例 from nginx from microsoft dotnet 2.1 aspnetcore runtime 2.run run 指令指定將要執行...