使用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