1. 程式人生 > >第 3 章 映象 - 016 - Dockerfile 常用指令

第 3 章 映象 - 016 - Dockerfile 常用指令

Dockerfile 常用指令

1、FROM 指定base映象
2、MAINTAINER 設定映象的作者,可以為任意字串
3、COPY 從build context 複製到映象

  COPY 支援兩種形式:

  • COPY src dest
  • COPY ["src", "dest"]

  注意:src 只能指定 build context 中的檔案或目錄。


4、ADD 與COPY類似,如果src是歸檔檔案是會自動解壓到dest。
5、ENV 設定環境變數,可被後面使用
6、EXPOSE 指定容器中的程序會監聽的某個埠,Docker 可以將該埠暴露出來。
7、VOLUME 將檔案或目錄宣告為volume


8、WORKDIR 為後面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設定映象的當前工作目錄
9、RUN 在容器中執行指定的命令
10、CMD 容器啟動時執行的指定的命令(可以有多個,但是隻有最後一個生效,可以被docker run之後的一個引數代替)。
11、ENTRYPOINT 設定容器啟動時執行的命令(可以有多個,但是隻有最後一個生效,CMD或docker run之後的引數會被當作引數傳遞給ENTRYPOINT。

 

示例

較為全面的 Dockerfile(注:Dockerfile 支援以“#”開頭的註釋)

1 FROM busybox
2
MAINTAINER [email protected] 3 WORKDIR /testdir 4 RUN touch tmpfile1 5 COPY ["tmpfile2","."] 6 ADD ["bunch.tar.gz","."] 7 ENV WELCOME "You are in my container, welcome!"

 構建映象並執行容器,驗證映象內容:

 1 [email protected]:~/0107# ls
 2 bunch.tar.gz  Dockerfile  tmpfile2
 3 [email protected]
:~/0107# 4 [email protected]:~/0107# docker build -t my-image . 5 Sending build context to Docker daemon 4.096kB 6 Step 1/7 : FROM busybox 7 ---> 3a093384ac30 8 Step 2/7 : MAINTAINER [email protected] 9 ---> Running in 397d7d53c4be 10 Removing intermediate container 397d7d53c4be 11 ---> f259c0f5e5da 12 Step 3/7 : WORKDIR /testdir 13 ---> Running in f0282c6305d0 14 Removing intermediate container f0282c6305d0 15 ---> 51e62b757fef 16 Step 4/7 : RUN touch tmpfile1 17 ---> Running in f80fb54dd08b 18 Removing intermediate container f80fb54dd08b 19 ---> e2590269bb44 20 Step 5/7 : COPY ["tmpfile2","."] 21 ---> f60ad0bd8a9e 22 Step 6/7 : ADD ["bunch.tar.gz","."] 23 ---> 5835dec7e44e 24 Step 7/7 : ENV WELCOME "You are in my container, welcome!" 25 ---> Running in c18629984787 26 Removing intermediate container c18629984787 27 ---> a5e0bf651f39 28 Successfully built a5e0bf651f39 29 Successfully tagged my-image:latest 30 [email protected]:~/0107# 31 [email protected]:~/0107# 32 [email protected]:~/0107# docker run -it my-image 33 /testdir # ls 34 bunch tmpfile1 tmpfile2 35 /testdir # 36 /testdir # echo $WELCOME 37 You are in my container, welcome! 38 /testdir #

1、進入容器,當前目錄即為 WORKDIR。如果 WORKDIR 不存在,Docker 會自動為我們建立。

2、WORKDIR 中儲存了我們希望的檔案和目錄:
目錄 bunch:由 ADD 指令從 build context 複製的歸檔檔案 bunch.tar.gz,已經自動解壓。
檔案 tmpfile1:由 RUN 指令建立。
檔案 tmpfile2:由 COPY 指令從 build context 複製。

3、ENV 指令定義的環境變數已經生效。

 

---------------------引用來自--------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587610&idx=1&sn=fc2c45c4eb11ecc20d6bba50cc7b8cad&chksm=8d308083ba470995f3e784386f4d09859fa7bdf93b0772d1b03669dd7612c818c6280f7f6b00&scene=21#wechat_redirect