通過Dockerfile構建Docker鏡像的方法步驟
Dockerfile是一個文本文件,其內包含瞭一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建.
Dockerfile支持Shell類的行尾添加”\”的命令換行方式,以及行首”#”進行註釋的格式.
使用Dockerfile構建Docker鏡像時註意事項:
(1).盡量選取滿足需求但較小的基礎系統鏡像;
(2).清理編譯生成文件、安裝包的緩存等臨時文件;
(3).安裝各個軟件時候要指定準確的版本號,並避免引入不需要的依賴;
(4).添加.dockerignore文件或使用幹凈的工作目錄.
Dockerfile常用指令:
(1).FROM:用於指定要構建的鏡像的基礎鏡像,它通常是Dockerfile中的第一條指令;
(2).LABEL:用於添加標簽來幫助組織鏡像、記錄許可信息、輔助自動化構建等,標簽是鍵值對,以字符串存儲;
(3).RUN:用於在鏡像中執行命令,這會創建新的鏡像層,每個RUN指令創建一個新的鏡像層,永遠將apt-get update和apt-get install組合成一條RUN;
RUN指令有兩種格式:
A.shell格式:RUN <命令>,就像直接在命令行中輸入的命令一樣;
B.exec格式:RUN [“可執行文件”, “參數1”, “參數2”];
(4).COPY:支持簡單將本地文件拷貝到容器中,通常使用COPY指令將應用代碼賦值到鏡像中;
(5).EXPOSE:用於記錄應用所使用的網絡端口;
(6).ENTRYPOINT:用於指定鏡像以容器方式啟動後默認運行的程序;
(7).ENV:為容器中安裝的程序更新PATH環境變量.
下面的Dockerfile用於在容器中可以直接編譯執行https://github.com/fengbingchun/Messy_Test:
FROM ubuntu:16.04 LABEL maintainer="FengBingchun [email protected]" \ version="1.0" \ description="dockerfile test" RUN dep_items='git cmake g++-5' \ && apt-get update \ && apt-get install -y $dep_items \ && ln -s /usr/bin/g++-5 /usr/bin/g++ \ && rm -rf /var/lib/apt/lists/*
構建鏡像,執行以下命令後會成功生成名字為fengbingchun/ubuntu:16.04的鏡像:
docker build -t fengbingchun/ubuntu:16.04 .
通過掛載主機目錄,新建容器test,執行以下命令:
docker run -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
然後,在容器內,cd到/home/fengbingchun目錄下,clone Messy_Test執行以下命令:
git clone https://github.com/fengbingchun/Messy_Test
然後cd到cd Messy_Test/prj/linux_cmake_CppBaseTest目錄下,依次執行如下命令
./build.sh ./build/CppBaseTest
執行結果如下圖所示,說明通過Dockerfile構建的鏡像可以正常編譯執行Messy_Test:
保存鏡像fengbingchun/ubuntu:16.04到tar包,執行以下命令:
docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04
將ubuntu_16.04.tar拷貝到ubuntu系統下,從tar包加載一個鏡像,執行以下命令:
docker load -i ubuntu_16.04.tar
然後執行windows上類似的操作,在新創建的容器test中編譯、執行Messy_Test,依次執行如下命令:
docker run -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash cd /home/fengbingchun/ git clone https://github.com/fengbingchun/Messy_Test cd Messy_Test/prj/linux_cmake_CppBaseTest/ ./build.sh ./build/CppBaseTest
執行結果如下圖所示:說明在Windows上生成的鏡像打包後,在Ubuntu上load後可正常使用.
到此這篇關於通過Dockerfile構建Docker鏡像的方法步驟的文章就介紹到這瞭,更多相關Dockerfile構建Docker鏡像內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Docker容器中掛載NFS共享目錄的實現
- Docker 存儲管理的幾種方式
- docker用root進入容器的操作
- 優化Docker鏡像安全性的12個技巧總結
- docker 添加端口及獲取dockerfile的方法