>>原創文章,歡迎轉載。轉載請注明:轉載自IT人故事會,謝謝!
>>原文鏈接地址:「docker實戰篇」python的docker-docker鏡像的創建使用dockerfile(33)
從上篇docker commit學習可以了解到,鏡像的定制其實每一層添加的配置和文件,如果把每一層的修改配置,修改文件,都寫入腳本,用這個腳本構建定制鏡像,無法重復的問題,鏡像構建透明性的問題,體積的問題都會解決。這個腳本就是Dockerfile。
Dockerfile
什么是dockerfile
一個文本文件,其內包含了一條條的指令,每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。
了解FROM
FROM指定基礎鏡像,基礎鏡像是必須指定的。而FROM就是指定基礎鏡像,因此一個Dockerfile中From是必備的指令,并且必須是第一條指令。在dockerhub上有很多高質量的docker鏡像,有可以直接拿來使用的基礎鏡像:nginx,tomcat,java,python,php,mongodb。搜尋最符合使用的的一個基礎鏡像。
了解RUN
RUN執行命令是用來執行命令行命令的。由于命令行的強大能力,RUN指令在定制鏡像時最常用的指令之一。
shell?格式:?RUN<命令>,就像直接在命令行中輸入的命令一樣 exec?格式:?RUN["可執行文件","參數1","參數2"],這更像是函數調用中的格式
不建議的寫成下面這種Dockerfile
> 之前說過Dockerfile每個指令都會創建一個層,下面這種寫法就是創建了7層的鏡像,這樣做就完全是沒有意義的,很多運行不需要的東西都被裝到這個鏡像里面去了,編譯環境更新軟件包,產生非常臃腫層非常多的鏡像,不僅僅增加了構建部署的時間,也很容易出錯,也是初學docker容易犯的錯誤,之前我也犯過。鏡像的層數是有限制的,最大層不能超過127層。鏡像是多層存儲的,在加入一層就是,之前的層不會被修改。
正確的方式。一定要做到每一層是需要的東西,任何無關的東西都要被清理掉。這也是制作鏡像容易犯的錯誤,之前安裝的文件沒有清理。
實戰編寫Dockerfile
創建目錄,存放Dockerfile
mkdir?newNginx cd?newNginx
編寫 Dockerfile
From?nginx RUN?echo?'<h2>welcome?to?idig8.com?study?docker</h2>'?>?/usr/share/nginx/html/index.html
構建Dockerfile
docker?build?-t?nginx:v2?. docker?images
推送docker hub推送
>登錄docker hub
#先配置dns?8.8.8.8 ?vi?/etc/resolv.conf docker?login
設置倉庫地址,登錄hub.docker.com
更改名稱
docker?tag?nginx:v2?zhugeaming/nginx:v2
完成推送
docker?push?zhugeaming/nginx:v2
查看結果
PS:其實在開發的時候,多任務的時候,只需要一個python3和mitmproxy的鏡像環境,已經做好了,到時候直接用docker push zhugeaming/python3-appium,其實想學習docker其他內容可以看我之前寫的其他文章。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。