DockerFlie的基本命令解析

2022-07-19 05:03:13 字數 4260 閱讀 3546

dockerflie

官網文件

:  dockerfile

中文:

docker 

倉庫位址

: 可以借鑑參考寫

exec 是當前命令執行(執行完會kill當前終端)   

run shell是子程序執行(/bin/shell -c echo hello)

在容器run的時候預設啟動的命令容器預設是/bin/bash   

cmd 是主程序啟動,是會被覆蓋的

entryoint 子程序啟動,不會被覆蓋

cmd ["executable","param1","param2"] 預設用這個

cmd ["param1","param2"] 給entrypoint的引數

cmd command param1 param2   

label 說明性資料

manintainer 被label取締

設定暴露埠,

expose 6379 … …   

環境變數

env 設定執行命令時候的環境變數,構建完成,還有效

arg 執行命令時的環境變數,構建完成後無效docker build --build-arg user=what_user

可以給定義的arg傳入值(比如使用者名稱和密碼,手動傳入)

宿主機目錄檔案拷貝到容器

copy 拷貝檔案

add 自動解壓檔案

指令的一般格式為

instruction arguments

,指令包括

from

、maintainer

、run

等。格式為

from

或from :

。第一條指令必須為

from

指令。並且,如果在同乙個

dockerfile

中建立多個映象時,可以使用多個

from

指令(每個映象一次)。

格式為maintainer

,指定維護者資訊。

格式為run

或run ["executable", "param1", "param2"]

。前者將在

shell

終端中執行命令,即

/bin/sh -c

;後者則使用

exec

執行。指定使用其它終端可以通過第二種方式實現,例如

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

run指令將在當前映象基礎上執行指定命令,並提交為新的映象。當命令較長時可以使用

\來換行。

支援三種格式

指定啟動容器時執行的命令,每個

dockerfile

只能有一條

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

如果使用者啟動容器時候指定了執行的命令,則會覆蓋掉

cmd指定的命令。

格式為expose [...]。告訴

docker

服務端容器暴露的埠號,供互聯系統使用。在啟動容器時需要通過-p,

docker

主機會自動分配乙個埠**到指定的埠。

格式為env

。指定乙個環境變數,會被後續

run指令使用,並在容器執行時保持。

例如

env pg_major 9.3

env pg_version 9.3.4

run curl -sl  | tar -xjc /usr/src/postgress && …

env path /usr/local/postgres-$pg_major/bin:$path

格式為add

。該命令將複製指定的

到容器中的。其中

可以是dockerfile

所在目錄的乙個相對路徑;也可以是乙個

url;還可以是乙個

tar

檔案(自動解壓為目錄)。

格式為copy

。複製本地主機的

(為dockerfile

所在目錄的相對路徑)到容器中的

。當使用本地目錄為源目錄時,推薦使用

copy

。兩種格式:

配置容器啟動後執行的命令,並且不可被

docker run

提供的引數覆蓋。

每個dockerfile

中只能有乙個

entrypoint

,當指定多個時,只有最後乙個起效。

格式為volume ["/data"]

。建立乙個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等。

格式為user daemon

。指定執行容器時的使用者名稱或

uid,後續的

run也會使用指定使用者。

當服務不需要管理員許可權時,可以通過該命令指定執行使用者。並且可以在之前建立所需要的使用者,例如:

run groupadd -r postgres && useradd -r -g postgres postgres

。要臨時獲取管理員許可權可以使用

gosu

,而不推薦

sudo

。格式為

workdir /path/to/workdir

。為後續的

run、

cmd、

entrypoint

指令配置工作目錄。

可以使用多個

workdir

指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。例如

workdir /a

workdir b

workdir c

run pwd

則最終路徑為

/a/b/c

。格式為

onbuild [instruction]

。配置當所建立的映象作為其它新建立映象的基礎映象時,所執行的操作指令。

例如,dockerfile

使用如下的內容建立了映象

image-a

[...]

[...]

如果基於

image-a

建立新的映象時,新的

dockerfile

中使用from image-a

指定基礎映象時,會自動執行

onbuild

指令內容,等價於在後面新增了兩條指令。

from image-a

#automatically run the following

使用onbuild

指令的映象,推薦在標籤中註明,例如

ruby:1.9-onbuild

。編寫完成

dockerfile

之後,可以通過

docker build

命令來建立映象。

基本的格式為

docker build [

選項]

路徑,該命令將讀取指定路徑下(包括子目錄)的

dockerfile

,並將該路徑下所有內容傳送給

docker

服務端,由服務端來建立映象。因此一般建議放置

dockerfile

的目錄為空目錄。也可以通過

.dockerignore

檔案(每一行新增一條匹配模式)來讓

docker

忽略路徑下的目錄和檔案。

要指定映象的標籤資訊,可以通過

-t選項,例如

例子 # flask web   

from python:alpine   

copy ./code /code   

workdir /code   

run pip install -r requirements.txt   

docker build . -t [取名]  

mysql基本命令總結 mysql基本命令總結

1.在ubuntu上安裝mysql sudo apt get install mysql server sudo apt get install mysql client 2.安裝結束後,用命令驗證是否安裝並啟動成功 sudo netstat tap grep mysql 通過上述命令檢查之後,如果...

linux終端基本命令和vi基本命令

今天學習內容 建立 了乙個基本的虛擬機器執行環境,在虛擬機器下使用cent os 6.0 系統,學習了linux終端命令 視窗的基本操作命令 和對vi 工具的簡單 操作 linux 基本命令 1 顯示當前路徑 pwd 2 切換路徑 cd 路徑名稱 絕對路徑 從根目錄開始,例如 root test3 ...

Gvim的基本命令

gvim的基本命令 編輯模式下 命令 說明 進入插入模式 i從游標所在位置前開始插入文字 i將游標移動到當前行行首,然後在其前插入文字 a用於在游標當前所在位置之後追加新文字 a將游標移動到所在行行尾,在那裡插入新文字 o在游標所在行的下面新開一行,並將游標置於行首,等待輸入文字 o在游標所在行的上...