DOCKER-1-6-Dockerfile容器編排一
1.先簡單介紹環境變數相關知識,${VARIABLE:-VALUE}和${VARIABLE:+VALUE}。
${VARIABLE:-VALUE}表示當VARIABLE為空時,顯示VALUE,當VARIABLE為非空時,顯示其值。
${VARIABLE:+VALUE}表示當VARIABLE為非空時,顯示VALUE,當VARIABLE為空時,顯示其值。
2.編輯Dockerfile檔案,注意首字母必須大寫。非註釋(沒有#)第一行必須時FROM指明基礎映象。MAINTAINER指明維護者資訊,也可以用LABER指明(這裡我們註釋掉,供參考),另外增加一個COPY操作。形成一個簡單的編排。通過docker build執行編排。-t引數給編排完的映象打上標籤。./指明建立到當前目錄。起一個tinyweb1容器執行cat指令進行驗證,跟--rm引數會在指令結束後自動關閉容器。
3.將/etc/yum.repos.d/目錄複製到/root/img1目錄(變為當前目錄)下,重新編排Dockerfile,將當前目錄中yum.repos.d目錄下的檔案,複製到映象檔案/etc/yum.repos.d目錄下,在Dockerfile中src(源)只用指明目錄,系統會自動選擇下面的問價,類似於DIR/*,dest(目標)一定要寫明目錄,即最後要加上/,否則會出現識別問題。編排完成用新映象後跑tinyweb1測試,發現檔案已經全部複製過去。
4.還可以通過ADD將網路壓縮檔案下載到容器,這裡一定要記得指明下載儲存的目錄路徑,系統是沒有預設儲存路徑的。編排完成後生成映象tinyhttpd:v0.1-3。起容器進行測試,發現壓縮包已經下載到容器下的指定路徑。
5.這裡我們將壓縮包下載到當前目錄,修改編排,將壓縮包ADD到指定目錄。系統會將其解壓到指定目錄下。用新編排建立映象,用映象起容器,然後驗證指定目錄下的情況。
6.再次編寫編排檔案。WORKDIR增加工作目錄,VOLUME指明宿主機上掛載目錄。建立映象,然後用映象起容器。在容器中mount檢視掛載地址。
7.再次編寫編排檔案,通過EXPOSE指明暴露的埠80。建立映象,用映象起容器,-f設定為前臺。在另一個視窗獲取容器IP地址,然後可以成功訪問頁面。但是通過port檢視埠,其實是沒有暴露的。這是關閉容器。
8.起映象的時候通過-P引數對埠進行暴露。通過port檢視埠轉發。然後在另一臺機器上對宿主機的轉發埠進行訪問,可以顯示容器執行的網頁介面。
9.重新編排,通過ENV設定變數DOC_ROOT和WEB_SERVER_PACKAGE。重新生成映象,用映象起容器。然後執行容器檢視相應的檔案,可以看到檔案。
10.再次起容器,通過printenv輸出環境變數。通過-e引數輸入一個環境變數數值後,再次printenv輸出環境變數,此時-e輸入的環境變數數值已經在環境中替換了原有的值。但是,在容器中,並不會按照傳入的值執行容器,因為傳入的引數值是適用於docker build階段RUN命令,而不適用docker run階段的CMD命令。
11.為了說明docker build階段的RUN命令,我們再次修改編排檔案,增加RUN,注意這裡有多行的時候用&& \(前面的指令執行完成才執行後面的指令,並且將每個指令分為一行便於識別)。起容器之後檢視執行的結果,發現執行了RUN的指令。