Docker 使用Dockerfile建立映象

2021-09-19 19:42:12 字數 2800 閱讀 1111

dockerfle 由 一行行命令語句組成, 並且支援以#開頭的注釋行。一般而言, dockerfle 主體內容分為四部分:基礎映象資訊、 維護者資訊、 映象操作指令和容器啟動時執行指令。

# escape=\ (backslash)

# this dockerfile uses the ubuntu:xeniel image

# version 2 - edition 1

# author: docker_user

# command format: instruction [arguments / command]

# base image to use, this must be set as the first line

from ubuntu:xeniel

# maintainer: . docker_user (@docker user)

label maintainer docker user

# commands to update the image

run echo "deb xeniel main universe" >> /etc/apt/sources.list

run apt-get update && apt-get install -y nginx

run echo "\ndaeron off;" >> /etc/nginx/nginx.conf

# commands when creating a new container

cmd /usr/sbin/nginx

首行可以通過注釋來指定解析器命令, 後續通過注釋說明映象的相關資訊。 主體部分首先使用from指令指明所基於的映象名稱, 接下來一般是使用label指令說明維護者資訊。後面則是映象操作指令, 例如run指令將對映象執行跟隨的命令。 每執行一條run指令,映象新增新的一層, 並提交。 最後是cmd指令, 來指定執行容器時的操作命令。

定義建立映象過程中使用的變數。格式為 arg [=]。在執行 docker build 時, 可以通過 -build-arg[=] 來為變數賦值。 當映象編譯成功後, arg 指定的變數將不再存在 (env 指定的變數將在映象中保留)。

docker 內建了一些映象建立變數, 使用者可以直接使用而無須宣告, 包括(不區分大小寫) http proxy 、 https proxy 、 ftp proxy 、 no proxy。

指定所建立映象的基礎映象。

格式為 from [as ] 或 from :[as ]或from @[as ] 。

任何 dockerfile 中第一條指令必須為 from 指令。 並且, 如果在同 乙個 dockerfle 中建立多個映象時, 可以使用多個 from 指令(每個映象一次)。

為了保證映象精簡, 可以選用體積較小的映象如 alpine或debian 作為基礎映象。 例如:

arg version=9.3

from debian:$

label 指令可以為生成的映象新增元資料標籤資訊。 這些資訊可以用來輔助過濾出特定映象。

格式為 label ===...。

例如:lael version="l.0.0-rc3"

lael author="yeasy@github" date="2020-01-01"

lael description="this text illustrates\that label-values can span multiple lines."

宣告映象內服務監聽的埠。

格式為 expose [...]。

例如:expose 22 80 8443

注意該指令只是起到宣告作用, 並不會自動完成埠對映。如果要對映埠出來, 在啟動容器時可以使用 -p 引數 (docker 主機會自動分配乙個宿主機的臨時埠)或 -p host_port:container_port 引數(具體指定所對映的本地埠)。

指令指定的環境變數在執行時可以被覆蓋掉, 如 docker run --env =built_image。

注意當一條 env 指令中同時為多個環境變數賦值並且值也是從環境變數讀取時, 會為變數都賦值後再更新。 如下面的指令, 最終結果為 key1=valuel key2=value2:

所謂最佳實踐,就是從需求出發,來定製適合自己 、高效方便的映象 。首先,要盡量吃透每個指令的含義和執行效果,多編寫一些簡單的例子進行測試,弄清楚了再撰寫正式的 dockerfile 。 此外, docker hub 官方倉庫中提供了大量的優秀映象和對應的 dockefile ,可以通過閱讀它們來學習如何撰寫高效的 dockerfile 。

基於python開發環境的Dockerfile總結

在本地建立乙個管理docker的目錄 macosx 系統下的 mkdir p mywork docker python 其他作業系統平台自定義管理目錄,這裡省略python開發環境的dockerfile from ubuntu 不指定版本預設使用最新版本 maintainer keithl 更改配置...

《Docker的使用》 二 Docker基本使用

1 建立並執行乙個互動式容器 docker run name my ubuntu it ubuntu bin bash name 指定乙個容器名字,如果不加 name則由docker隨機分配乙個容器名字 合法名字只能包含 大小寫字母,數字,下劃線,圓點,橫線 i t i 保持標準輸入的開啟 t 給容...

Docker 使用Docker部署Node服務

docker 是乙個開源的容器引擎。開發者可以將自己的應用以及依賴打包為乙個可移植的容器,然後發布到 linux 機器上。它類似於乙個輕量級的虛擬機器,極大地方便了使用者在伺服器端部署和管理應用環境。apt install docker.io安裝成功後檢視docker版本 建立package.jso...