Docker學習筆記--------2.Dockerfile的指令

1.Dockerfile的指令

1.FROM

格式1: 
  FROM <image> # 
格式2:
  FROM <image>:<tag>
注意:
  1.必須是已存在的鏡像
  2.必須是第一個非註釋的指令

2.MAINTAINER

1.指定鏡像的作者信息,包含鏡像的所有者和聯繫信息
2.如:
  MAINTAINER ywk "[email protected]"

3.RUN

3.1 方式一:RUN (shell模式)

3.3 方式二:RUN [] (exec模式)

4.EXPOSE

此處暴露的端口,docker並不會自動配置,還是需要run的時候手動指定

5.CMD和ENTRYPOINT

CMD指令
  1.CMD 是在容器運行時運行的,如果run是指定了容器執行後的指令,則cmd的指令不會執行
      CMD ["executable","param1","parma2"] # exec模式
      CMD  command parma1 param2   # shell模式
      CMD ["parma1","parma2"] # 作爲ENTRYPOINT指令的默認參數
      
  2.如
    ---1. vi Dockerfile
        # first dockerfile content
        FROM ubuntu:16.04
        MAINTAINER ywk "[email protected]"
        RUN apt-get update && apt-get install nginx
        EXPOSE 80
        CMD ["/user/sbin/nginx","-g","daemon off"]
    ---2. docker build -t="ywk/test"
    ---3.docker run -p 80 --name cmd_test -d ywk/test
    ---4.docker top ywk/test # 查看docker容器運行了哪些服務

ENTRYPOINT指令
    ENTRYPOINT ["executable","param1","parma2"] # exec模式
    ENTRYPOINT  command parma1 param2   # shell模式
    即使docker run 指定了命令,如
      docker run -p 80 --name cmd_test -d ywk/test /bin/bash
      /bin/bash也不會執行

6.ADD和COPY

ADD <src> <dest>
ADD ['<src>"...."<dest>"](適用於文件路徑中有空格的情況)

COPY <src> <dest>
COPY ['<src>"...."<dest>"](適用於文件路徑中有空格的情況)

注意1:都是將文件複製到docker構建的鏡像中
注意2:src:必須是構建鏡像的相對地址
      dest:鏡像中的絕對地址
注意3:
  ADD:包含類似tar的解壓功能
  如果是單純的複製文件,Docker推薦使用COPY

如:
    # first dockerfile content
    FROM ubuntu:16.04
    MAINTAINER ywk "[email protected]"
    RUN apt-get update && apt-get install -y nginx
    COPY index.html /usr/share/nginx/html/
    EXPOSE 80
    CMD ["/user/sbin/nginx","-g","daemon off"]
    --------------------------------------------------------
    docker build......
    -------------------------------------------------------
    docker run -d -p 80 --name copy_test ywk/test3
    --------------------------------------------------------
    訪問nginx
    cul http://127.0.0.1:49168
    結果:nginx的頁面被替換

7.VOLUME

用來基於鏡像文件的卷,實現數據持久化

點擊這裏查看使用方法:Docker的數據卷容器

8.WORKDIR ENV 和USER

WORKDIR /path/to/workdir # 容器內部的工作目錄
ENV <key><value> # 設置環境變量
ENV <key>=<value>
USER daemon # 指定鏡像以 何用戶的身份 來運行
    如 USER nginx
    如果不指定用戶,則以root用戶的方式運行

9.ONBUILD

ONBUILD [INSTRUCTION]
鏡像觸發器
當  這個鏡像(有ONBUILD指令)  被其他鏡像作爲基礎鏡像時執行
會在構建過程中插入指令

如:
    # first dockerfile content
    FROM ubuntu:16.04
    MAINTAINER ywk "[email protected]"
    RUN apt-get update && apt-get install -y nginx
    ONBUILD COPY index.html /usr/share/nginx/html/ # 修改了這裏
    EXPOSE 80
    CMD ["/user/sbin/nginx","-g","daemon off"]
    --------------------------------------------------------
    docker build......
    -------------------------------------------------------
    docker run -d -p 80 --name copy_test ywk/test4
    --------------------------------------------------------
    訪問nginx
    cul http://127.0.0.1:49168
    結果:nginx的頁面沒有被替換
    -----------------------------------------------------------
    構建第二個鏡像,構建後頁面會被替換
     FROM  
     xxx ywk/test4
     xxx
     xxx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章