006Docker學習__ Dockerfile 常用指令
阿新 • • 發佈:2020-07-14
常用指令
下面列出了 Dockerfile 中最常用的指令,完整列表和說明可參看官方文件。 FROM:指定 base 映象。 MAINTAINER:設定映象的作者,可以是任意字串。 COPY:將檔案從 build context 複製到映象。 COPY 支援兩種形式: COPY src dest COPY ["src", "dest"] 注意:src 只能指定 build context 中的檔案或目錄。 ADD:與 COPY 類似,從 build context 複製檔案到映象。不同的是,如果 src 是歸檔檔案(tar, zip, tgz, xz 等),檔案會被自動解壓到 dest。...
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
...
EXPOSE:指定容器中的程序會監聽某個埠,Docker 可以將該埠暴露出來。我們會在容器網路部分詳細討論。
VOLUME:將檔案或目錄宣告為 volume。我們會在容器儲存部分詳細討論。
WORKDIR:為後面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設定映象中的當前工作目錄。
RUN:執行命令並建立新的映象層,RUN 經常用於安裝軟體包。
CMD:容器啟動時執行指定的命令。#my Dockerfile
FROM busybox:latest
MAINTAINER 564010792@qq.com
WORKDIP /testdir
RUN touch tmpfile1
COPY [ "tmpfile2","." ]
ADD [ "test.tar.gz","." ]
ENV WELCOME "you are in my container,welcome!"
構建映象
依次執行 Dockerfile 指令,完成構建。
[root@docker test]# ls
Dockerfile test.tar.gz tmpfile2 ####構建前確保 build context 中存在需要的檔案。
[root@docker test]# docker build -t my_images:latest . #####依次執行 Dockerfile 指令,完成構建。
Sending build context to Docker daemon 3.584kB
Step 1/7 : FROM busybox:latest
---> 6d5fcfe5ff17
Step 2/7 : MAINTAINER 5640107@qq.com
---> Using cache
---> a381366b57a6
Step 3/7 : WORKDIR /testdir
---> Using cache
---> 9724c982053a
Step 4/7 : RUN touch tmpfile1
---> Using cache
---> 6355f5f617ef
Step 5/7 : COPY [ "tmpfile2","." ]
---> Using cache
---> 19db53e1e328
Step 6/7 : ADD [ "test.tar.gz","." ]
---> 26288a704213
Step 7/7 : ENV WELCOME "you are in my container,welcome!"
---> Running in 743b1d9e5303
Removing intermediate container 743b1d9e5303
---> b772c7836ae2
Successfully built b772c7836ae2
Successfully tagged my_images:latest
執行容器,驗證映象內容:
[root@docker test]# docker run --name con01 --rm -it my_images
/testdir #
##進入容器,當前目錄即為 WORKDIR。如果 WORKDIR 不存在,Docker 會自動為我們建立
/testdir # ls
tmpfile1 tmpfile2 tmpfile3 tmpfile4 tmpfile5
##WORKDIR 中儲存了我們希望的檔案和目錄:
##目錄 bunch:由 ADD 指令從 build context 複製的歸檔檔案 test.tar.gz,已經自動解壓。
##檔案 tmpfile1:由 RUN 指令建立。
##檔案 tmpfile2:由 COPY 指令從 build context 複製。
/testdir # echo "$WELCOME"
you are in my container,welcome!
##ENV 指令定義的環境變數已經生效。