1,Dockers的最小鏡像
創新互聯建站自2013年創立以來,先為三山等服務建站,三山等地企業,進行企業商務咨詢服務。為三山企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
[root@localhost ~]# docker pull hello-world
//下載一個最小的鏡像
[root@localhost ~]# docker images
//查看鏡像
[root@localhost ~]# docker run hello-world
//運行一下hello-world (里面是一個文本對docker運行的簡單介紹)
dockerfile的組成
1)FROM:scratch(抓、撓)
2)COPY:hello /
3)CMD:[“/hello”]
FROM
語法:FROM <image>[:<tag>]
解釋:設置要制作的鏡像基于哪個鏡像,FROM指令必須是整個Dockerfile的第一個指令,如果指定的鏡像不存在默認會自動從Docker Hub上下載。
COPY
語法:COPY <src> <dest>
解釋:用法與ADD相同,不過<src>不支持使用url,所以在使用docker build – < somefile時該指令不能使用。
CMD
語法:①CMD ["executable", "param1", "param2"] #將會調用exec執行,首選方式
②CMD ["param1", "param2"] #當使用ENTRYPOINT指令時,為該指令傳遞默認參數
③CMD <command> [ <param1>|<param2> ] #將會調用/bin/sh -c執行
解釋:CMD指令中指定的命令會在鏡像運行時執行,在Dockerfile中只能存在一個,如果使用了多個CMD指令,則只有最后一個CMD指令有效。當出現ENTRYPOINT指令時,CMD中定義的內容會作為ENTRYPOINT指令的默認參數,也就是說可以使用CMD指令給ENTRYPOINT傳遞參數。
注意:RUN和CMD都是執行命令,他們的差異在于RUN中定義的命令會在執行docker build命令創建鏡像時執行,而CMD中定義的命令會在執行docker run命令運行鏡像時執行,另外使用第一種語法也就是調用exec執行時,命令必須為絕對路徑。
2、Base鏡像(基礎鏡像)
Centos:7鏡像的dockerfile
FROM scratch
ADD centos-7-x86_ _64-docker.tar.xz /
LABEL org. label-schema. schema-version="1.0" \|
org. label-schema. name="Centos Base Image" \
org. labe1-schema. vendor="centos" \
org. labe1-schema. 1icense="GPLV2" \
org. labe1-schema build-date="20190305 '
CMD ["/bin/bash"]
3、鏡像的分層
1)dockerfile的書寫格式為:Dockerfile(首字母大寫,包括文件名稱)
2)From:構建鏡像有兩種方式,一種scratch(從零構建),另一種可以基于某個鏡像開始構建
3)鏡像所運行的操作(用戶所期望的)
[root@localhost ~]# mkdir test
//創建測試目錄
[root@localhost ~]# cd test
//進入測試目錄
[root@localhost ~]#vim Dockerfile
//編寫Dockerfile
FROM centos:7
RUN yum -y install vim #或["yum","install","vim"]
RUN yum -y install net-tools
CMD ["/bin/bash"]
執行一下
[root@localhost test]# docker build -t centos7-vim-net-tools:12-11 .
//使用當前目錄的 Dockerfile 創建鏡像,標簽為 centos7-vim-net-tools:12-11
build: 使用 Dockerfile 創建鏡像
-t:標簽
. :當前目錄
執行的層次
4.Dockerfile鏡像分層總結
鏡像時容器的基石,容器是鏡像運行后的實例。當鏡像運行為容器之后,對鏡像的所有數據僅有只讀權限,如果需要對鏡像源文件進行修改或刪除操作,此時是在容器層(可寫層)進行的,用到了COW(copy on write)寫時復制機制。
1.創建一個新的Dockerfile文件
[root@localhost ~]# vim Dockerfile
FROM centos:7
RUN yum -y install vim
RUN yum -y install net-tools
RUN yum -y install wget
CMD ["/bin/bash"]
[root@localhost ~]# docker build -t new-centos .
//使用當前目錄的 Dockerfile 創建鏡像,名稱為new-centos
如果在相同的層,有用到相同的鏡像,可以不必再去下載,直接使用緩存。(如果第一層的不相同了,那么下面的相同也沒用了,需要重新下載)
3.再次創建一個新的Dockerfile
[root@localhost ~]# mkdir test1
[root@localhost ~]# cd test
[root@localhost test]# cd ../test1
[root@localhost test1]# vim Dockerfile
FROM centos:7
RUN yum -y install vim
RUN yum -y install wget
RUN yum -y install net-tools
CMD ["/bin/bash"]
[root@localhost test1]# docker build -t centos-new .
//使用當前目錄的 Dockerfile 創建鏡像,名稱為centos-new
即使鏡像層里的操作一樣,也必須是在同一層才可以使用dockerfile的緩存特性
如果制作鏡像過程中,不想使用緩存,可以--no-cache選項
名稱欄目:Dockers鏡像分層
文章路徑:http://m.newbst.com/article46/jesihg.html
成都網站建設公司_創新互聯,為您提供手機網站建設、微信小程序、網站設計、標簽優化、網站營銷、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯