首頁>技術>

映象是容器的模板,容器是映象執行的例項,可以類比為模具和實物的關係

一、映象的構成

hello-world

Hello-world是docker官方提供的一個很小的映象,用來測試docker是否正確執行

這個映象才1.04kb,我們看下他的Dockerfile描述

FROM scratchCOPY hello /CMD ["/hello"]

(1) FROM scratch 說明映象是白手起家,從0開始構建

(2) COPY hello / 將檔案"hello"複製到映象的目錄

(3) CMD ["/hello"] 容器啟動時執行 /hello

二、Dockerfile的構建

概念:Dockerfile 是一個包含建立映象所有命令的文字檔案,通過docker build命令可以根據 Dockerfile 的內容構建我們自己需要的映象

base映象:

a、不依賴其他映象,從scratch開始

b、以其他映象為基礎擴充套件

Dockerfile常用指令,主要分為配置指令和操作指令,一圖展示各種命令

配置指令

2.1、ARG(定義映象建立過程中的變數)

用法:ARG <name>[<default value>]

2.2、FROM

用法:FROM <image>
FROM指定構建映象的基礎源映象,如果本地沒有該映象,預設會從 DockerHub上拉取映象FROM scratch 說明映象是從0開始構建,不依賴其他映象FROM可以在一個 Dockerfile 中出現多次,如果有需求在一個 Dockerfile 中建立多個映象

2.3、LABEL

用法:LABEL <key>=<value> <key>=<value> <key>=<value>

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

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

2.4、EXPOSE(宣告映象內服務監聽的埠)

用法:EXPOSE <port>

例如:EXPOSE 22 80 8443

2.5、ENV

用法:ENV <key> <value>或 ENV <key>=<value>

例如:

ENV APP_VERSION=1.0.0

ENV APP_HOME=/usr/local/bin

ENV PATH $PATH:/usr/local/bin

2.6、ENTRYPOINT

支援兩種格式:

□ ENTRYPOINT ["executable", "paraml ", "param2"]:exec 呼叫執行;

□ ENTRYPOINT command param 1 param2: shell 中執行;

每個Dockerfile 中只能有一個ENTRYPOINT, 當指定多個時,只有最後一個起效。

2.7、WORKDIR

用法:WORKDIR <PATH>

WORKDIR /root/test

操作指令

2.8、RUN

用法:RUN <command>

例如:

RUN apt-get update \\

&& apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \\

&& rm -rf /var/cache/apt

2.9、CMD(啟動容器時指定預設執行的命令)

用法:CMD command paraml param2 :在預設的Shell 中執行

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

2.10、ADD

格式為ADD <src> <dest>

COPY的作用和ADD類似,這裡不再贅述

三、通過示例練習Dockerfile

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 運維道中道之“Shell指令碼日誌關鍵字監控+告警”