Dokcerfile常見命令
FROM
指定base映象
MAINTAINER
標記映象的作者,可以是任意字串
COPY
將檔案從 build context 複製到映象
COPY支援兩種形式:
1、 COPY src dest
2、 COPY ["src","dest"]
ps: src 只能指定 build context 中的檔案或者目錄
ADD
與COPY類似,從 build context 複製檔案到映象
不同的是如果src是歸檔檔案(tar、zip、tgz、xz等),檔案會被自動解壓到dest
ENV
設定環境變數,環境變數可以被後面的指定使用
EXPOSE
指定容器中的程式會監聽哪個埠,Docker 可以將該埠暴露出來
VOLUME
將檔案或者目錄宣告為VOLUME
WORKDIR
為後面的 RUN、CMD、ENTRYPOINT、ADD和COPY指令設定映象中的當前工作目錄
RUN
在容器中執行指定的命令
CMD
容器啟動時執行指定的命令
Dockerfile 中可以有多個CMD指令,但是隻有最後一個生效。CMD可以被docker run之後的引數替換
ENTYRPOINT
設定容器啟動時執行的命令
Dockerfile中可以有多個ENTYRPOINT指令,但只有最後一個生效。CMD或docker run後的引數會被當做引數傳遞給ENTRYPOINT
root@docker-lab:~/016# ls -l # 檢視build context內容
total 12
-rw-r--r-- 1 root root 216 Jan 7 14:19 Dockerfile
-rw-r--r-- 1 root root 157 Jan 7 14:21 test_add_file.tar.gz
-rw-r--r-- 1 root root 51 Jan 7 14:20 test_copy_file
root@docker-lab:~/016# cat Dockerfile # 檢視Dokcerfile內容
# This is my first image # 註釋部分
FROM busybox # 以busybox映象為基礎進行構建
MAINTAINER https://www.cnblogs.com/www1707 # 作者資訊
WORKDIR /testdir # 設定映象中的當前目錄
RUN touch testfile # 建立一個空檔案
COPY test_copy_file . # 從build context拷貝一個檔案到映象中
ADD test_add_file.tar.gz . # 將 tar.gz 檔案解壓到映象中
ENV WELCOME "You are in my container , welcome !" # 在映象中新增一個WELCOME的變數
root@docker-lab:~/016# tar -tvf test_add_file.tar.gz
-rw-r--r-- root/root 0 2019-01-07 14:20 tar_gz_a
-rw-r--r-- root/root 0 2019-01-07 14:20 tar_gz_b
-rw-r--r-- root/root 0 2019-01-07 14:20 tar_gz_c
-rw-r--r-- root/root 0 2019-01-07 14:20 tar_gz_d
root@docker-lab:~/016# cat test_copy_file
-----------------
test_copy_file
-----------------
root@docker-lab:~/016# docker build -t myimage .
Sending build context to Docker daemon 4.096kB
Step 1/7 : FROM busybox
latest: Pulling from library/busybox
57c14dd66db0: Pull complete
Digest: sha256:b6e640a3768c460ad6066a003b6da52034c31aaf8500f9263057ddffcd830ef6
Status: Downloaded newer image for busybox:latest
---> 3a093384ac30
Step 2/7 : MAINTAINER https://www.cnblogs.com/www1707
---> Running in d8b4503fd90d
Removing intermediate container d8b4503fd90d
---> 3de3f5987213
Step 3/7 : WORKDIR /testdir
Removing intermediate container 1ffe55213785
---> acbe13b30785
Step 4/7 : RUN touch testfile
---> Running in 97513a85bf15
Removing intermediate container 97513a85bf15
---> 3299ecfc7cd6
Step 5/7 : COPY test_copy_file .
---> fb808779db38
Step 6/7 : ADD test_add_file.tar.gz .
---> b6a1f8da1796
Step 7/7 : ENV WELCOME "You are in my container , welcome !"
---> Running in b672d00ec977
Removing intermediate container b672d00ec977
---> c67728621bdd
Successfully built c67728621bdd
Successfully tagged myimage:latest
root@docker-lab:~/016# docker run -it myimage
/testdir # echo $WELCOME # 驗證ENV變數是否設定成功
You are in my container , welcome !
/testdir # ls # 驗證RUN、COPY、ADD是否成功
tar_gz_a tar_gz_b tar_gz_c tar_gz_d test_copy_file testfile
/testdir # pwd # 驗證WORKDIR是否成功
/testdir
/testdir # cat test_copy_file # 驗證COPY是否成功
-----------------
test_copy_file
-----------------