Dockerfile構建鏡像

Dockerfile 構建鏡像

建立一個本地倉庫
構建一個靜態頁面鏡像
$ mkdir static_web
$ cd static_web
$ touch Dockerfile
Dockerfile文件格式及詳解
# Version 0.0.1
FROM ubuntu:14.04
MAINTAINER Hadeian "hadeian@example.com"
RUN apt-get update && apt-get install nginx -y
RUN echo 'Hi, I am in your container.' > /usr/share/nginx/html/index.html
EXPOSE 80
  • Dockerfile由指令和參數組成,每條指令都必須爲大寫字母,且要跟隨一個參數。
  • Dockerfile中的指令會按順序從上到下執行。
  • Dockerfile大致按照以下流程執行:
    1. Docker從基礎鏡像運行一個容器。
    2. 執行一條指令,對容器進行修改。
    3. 執行相似docker commit的操做,提交一個新的鏡像層。
    4. Dcoker再基於剛提交的鏡像運行一個新的容器。
    5. 執行Dockerfile中的下一條指令,直到全部指令執行完畢。
  • 好處:
    1. 方便用戶調試。若因爲某些緣由失敗(如某條指令失敗)也可獲得一個可交互的鏡像,可經過登陸鏡像進行調試。
    2. 可構建緩存。能夠實現一個簡單的Dockerfile模板。
基於Dockerfile構建鏡像
cd static_web
# 在構建時爲鏡像設置標籤
# 構建時會將當前上下文上傳到docker守護進程
docker build -t "test/static_web:v1" .
# 從git倉庫構建docker鏡像
docker build -t "test/static_web:v1" git@github.com:test/docker-static_web

Dockerfile指令含義:html

指令 含義
FROM 第一條指令必須是FROM,用於指定基礎鏡像。
MAINTAINER 該指令會告訴docker做者的信息。
RUN 在容器中運行指定命令,每個RUN指令都會建立一個鏡像層,執行成功後,會將此鏡像層提交,而後繼續執行下一條指令。
EXPOSE 該指令用於向外部公開端口,能夠指定多個端口。
ENV 指定容器中的環境變量。
CMD 用於指定一個容器啓動時要運行的命令,可被docker run命令覆蓋。
ENTRYPOINT 與CMD指令相似,可接受docker run命令傳遞的參數,但不會被覆蓋。
WORKDIR 在容器內部設置一個工做目錄,ENTRYPOINT/CMD將在此目錄下執行。
USER 指定該鏡像會以什麼用戶運行。
VOLUME 爲基於此鏡像建立的容器建立一個指定的掛載點。
ADD 將構建環境下的文件和目錄複製到鏡像中。可使用url做爲文件源,可將歸檔(壓縮)文件做爲源文件,並在容器中自動解開。
COPY 相似於ADD指令。COPY指令只關心在構建上下文中(當前目錄下)複製本地文件,而不會作文件提取和解壓工做。
LABEL 用於爲Docker鏡像添加元數據。元數據以鍵值對(字典)的形式展示。能夠在每條指令中指定一個或多個元數據,不一樣元數據之間用空格分離。
ARG 用於定義能夠在docker build命令運行時傳遞給構建運行時的變量。在構建時使用--build-arg指定參數便可。用戶只能在構建時指定在Dockerfile中定義過的參數。預約義(默認)ARG變量: HTTP_PROXY http_proxy HTTPS_PROXY https_proxy FTP_PROXY ftp_proxy NO_PROXY no_proxy。使用格式:docker build --build-arg =
STOPSIGNAL 用於設置中止容器時發送系統調用信號給容器。這個信號必須是內核系統調用表中合法的數,如9。或者DIGNAME格式的信號名稱,如SIGKILL。
ONBUILD 爲鏡像添加觸發器。當一個鏡像被用做其餘鏡像的基礎鏡像時,觸發器纔會被執行。觸發器會在構建過程當中插入新指令,能夠認爲這些指令是緊跟在FROM以後指定的。
將鏡像推送到Docker Hub
docker push test/static_web
# test/static_web: DockerHub用戶名/鏡像名
DockerHub自動構建
將GitHub鏈接只DockerHub:
  1. 登陸DockerHub
  2. Repositories
  3. Create Repository
  4. Please re-link a GitHub or Bitbucket account中選擇GitHub圖標
  5. Create & Build
相關文章
相關標籤/搜索