Dockerfile定製映象

zyhmz發表於2018-06-15

映象的定製實際上就是定製每一層所新增的配置、檔案。如果我們可以把每一層修改、安裝、構建、操作的命令都寫入一個指令碼,用這個指令碼來構建、定製映象。

Dockerfile 是一個文字檔案,其內包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。
在一個空白目錄中,建立一個文字檔案,並命名為 Dockerfile:

$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile

然後寫入的內容為:

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

下面我們來解釋一下這些指令的具體含義和使用方法:

FROM 指定基礎映象

所謂定製映象,那一定是以一個映象為基礎,在其上進行定製。就像我們之前執行了一個 nginx 映象的容器,再進行修改一樣,基礎映象是必須指定的。而 FROM 就是指定基礎映象,因此一個 Dockerfile 中 FROM 是必備的指令,並且必須是第一條指令。

RUN 執行命令

之前說過,Dockerfile 中每一個指令都會建立一層,RUN 也不例外。每一個 RUN 的行為,就和剛才我們手工建立映象的過程一樣:新建立一層,在其上執行這些命令,執行結束後,commit 這一層的修改,構成新的映象。
假如我們需要用 Docker Compose 搭建 Rails 開發環境, Dockerfile的RUN指令可以這樣來寫,這樣我們只需要commit兩層映象:

RUN apt-get update && apt-get install -y curl apt-transport-https && \
  curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
  echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee              /etc/apt/sources.list.d/yarn.list

RUN apt-get update && apt-get install -y \
  build-essential \
  libpq-dev \
  nodejs \
  ruby \
  ruby-dev \
  tzdata \
  yarn \
  zlib1g-dev

WORKDIR 指定工作目錄

WORKDIR /Users/paul.zhang/workspace/myapp

相關文章