使用Dockerfile建置

在Docker的世界裡,有Dockerfile就可以對應一個可以執行的環境(Image),而Dockerfile就是建置Docker Image的腳本...

準備Dockerfile

下面是一個簡單的Dockerfile,我們預設存在$HOME/project/dockerws/nodejs目錄下

FROM google/nodejs

# Define working directory.
WORKDIR /data

# Define default command.
EXPOSE 3000
CMD []
ENTRYPOINT ["/nodejs/bin/npm", "start"]
  • FROM: 指定base image
  • WORKDIR: 指定docker執行起來時候的預設目錄位置
  • EXPOSE: 指定所有發布的port
  • CMD: 指定Instance啟動後所要執行的指令
  • ENTRYPOINT: 指令Instance啟動後,程式的進入點

接著,我們來看看這個Image的前身google/nodejs:

FROM google/debian:wheezy

RUN apt-get update -y && apt-get install --no-install-recommends -y -q curl python build-essential git ca-certificates
RUN mkdir /nodejs && curl http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz | tar xvzf - -C /nodejs --strip-components=1

ENV PATH $PATH:/nodejs/bin
  • RUN: 指定build過程中所要執行的指令與安裝動作
  • ENV: 指令啟動後的環境變數

透過瀏覽幾個Dockerfile,可以很容易地抓到Dockerfile的使用邏輯...

Build

接下來我們切入到這個Dockerfile的目錄($HOME/project/dockerws/nodejs),進行建置動作:

docker build .

這個build動作完成後會回覆一個image id,代表這個image建置完成。

Build with TAG

一般我們要commit到Docker Hub的話,會需要針對該Docker Image製作一個TAG,之後使用這個TAG做push... 透過"-t"可以指定該build動作到一個TAG上。

docker build -t="your-name/image-name" .

Push到Docker Hub

最後透過docker push,即可將該image push到docker hub,供大家使用!

docker push your-name/image-name

results matching ""

    No results matching ""