016、Dockerfile 常用命令(2019-01-07 週一)

三角形發表於2019-01-07
 
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
-----------------
 
 
 

相關文章