dockerfile指令構(gòu)建docker鏡像的示例代碼
初識Dockerfile
Dockerfile就是用來構(gòu)建docker鏡像的構(gòu)建文件!命令腳本!
通過這個腳本可以生成鏡像,鏡像是一層層的,腳本是一行行的命令,每行命令都是一層
dockerfile是面向開發(fā)的,我們以后要發(fā)布項目,作鏡像,就需要編寫dockerfile文件,這個文件十分簡單。
Dockerfile鏡像之間成為了企業(yè)交付的標(biāo)準(zhǔn),必須掌握!
編寫一個自己的docker 鏡像:
編寫Dockerfile文件:
#創(chuàng)建一個dockerfile文件,名字可以隨機,建議Dockerfile #文件中的內(nèi)容:指令(大寫) 參數(shù) #實例測試: #創(chuàng)建目錄存放dockerfile文件的目錄: [root@localhost ~]# mkdir docker_test #進(jìn)入目錄創(chuàng)建dockerfile文件: [root@localhost ~]# mkdir docker_test [root@localhost ~]# cd docker_test/ [root@localhost docker_test]# touch dockerfile #編寫dockerfile文件,在文件中寫入dockerfile指令: [root@localhost docker_test]# vim dockerfile FROM centos VOLUME ["volume01","volume02"] CMD echo "----end----" CMD /bin/bash
將Dockerfile文件轉(zhuǎn)為鏡像:
#使用docker build . 命令將dockerfile文件轉(zhuǎn)為鏡像 [root@localhost docker_test]# docker build -f /root/docker_test/dockerfile -t hzw/centos . Sending build context to Docker daemon 2.048kB Step 1/4 : FROM centos ---> 5d0da3dc9764 Step 2/4 : VOLUME ["volume01","volume02"] ---> Running in d4b23ae86ace Removing intermediate container d4b23ae86ace ---> 8f39792fbef7 Step 3/4 : CMD echo "----end----" ---> Running in 1bb4751f04ef Removing intermediate container 1bb4751f04ef ---> 2e2bb5e2a502 Step 4/4 : CMD /bin/bash ---> Running in 82a0b5905405 Removing intermediate container 82a0b5905405 ---> 39a1fd86fd73 Successfully built 39a1fd86fd73 Successfully tagged hzw/centos:latest #由此可以發(fā)現(xiàn)docker創(chuàng)建鏡像也是一層層創(chuàng)建的。每個命令都是鏡像的一層。
查看自己構(gòu)建的docker鏡像
[root@localhost docker_test]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hzw/centos latest 39a1fd86fd73 2 minutes ago 231MB
使用自己構(gòu)建的docker鏡像生成容器:
[root@localhost docker_test]# docker run -it hzw/centos /bin/bash [root@f62a714bb306 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02 #可以看見我們構(gòu)建的鏡像也是能正常進(jìn)去使用的,并且我們在dockerfile寫指令掛載的目錄也在這個容器里。
DockerFile
dockerfile時用來構(gòu)建docker鏡像文件!命令參數(shù)腳本!
構(gòu)建步驟:
1、編寫一個dockerfile文件
2、docker build . 構(gòu)建稱為一個鏡像
3、docker run 運行鏡像
4、docker push 發(fā)布鏡像(DockerHub、阿里云鏡像倉庫)
Dockerfile指令:
FROM #指定基礎(chǔ)鏡像,一切從這里開始構(gòu)建 MAINTAINER #鏡像是誰寫的,姓名+郵箱 RUN #鏡像構(gòu)建的時候需要運行的命令 ADD #步驟:tomcat鏡像,這個tomcat壓縮包!添加內(nèi)容 WORKDIR #鏡像的工作目錄 VOLUME #掛載的目錄 EXPOST #暴露端口配置 CMD #指定這個容器啟動時候要運行的命令,只有最后一個會生效,可被替代 ENTRYPOINT #指定這個容器其董事會要運行的命令,可以追加命令 ONBUILD #當(dāng)構(gòu)建一個被繼承dockerfile,這個時候就會運行ONBUILD的指令。是一個觸發(fā)指令 COPY #類似ADD,將我們文件拷貝到鏡像 ENV #構(gòu)建的時候設(shè)置環(huán)境變量!
docker build . 命令
構(gòu)建好dockerfile文件后,我們就用docker build命令將文件構(gòu)建成鏡像。
#命令使用方法: docker build -f dockerfile文件路徑 -t 取個鏡像名 . #參數(shù)詳解: -f dockerfile的文件路徑,可以寫絕對路徑,也可以寫相對路徑 -t 給構(gòu)建的鏡像取個名字,名字格式: 名字:標(biāo)簽 . 構(gòu)建上下文的路徑 必須寫
查看鏡像是如何生成的
docker history 鏡像ID
實操訓(xùn)練:Dockerfile構(gòu)建Nginx鏡像: 編寫Dockerfile制作鏡像,生成鏡像名為my_build:Nginx1。首先創(chuàng)建目錄dockerfile-nginx1,保存Dockerfile文件。具體要求如下:
(1)基于鏡像centos:7
(2)安裝Nginx
a.安裝相關(guān)依賴
b.下載并解壓Nginx
(3)工作目錄設(shè)為:nginx-1.9.7
(4)編譯安裝Nginx
(5)對外暴露80,443端口
(6)修改Nginx配置文件,以非daemon方式啟動
(7)復(fù)制服務(wù)啟動腳本并設(shè)置權(quán)限
(8)啟動容器時執(zhí)行腳本run.sh
run.sh內(nèi)容如下所示:
開始操作:
創(chuàng)建dockerfile-nginx1文件夾,進(jìn)入該文件夾,編寫Dockerfile文件
mkdir dockerfile-nginx1 cd dockerfile-nginx1/ vim Dockerfile
編寫Dockerfile文件內(nèi)容:
#該文件時基于centos7鏡像為基礎(chǔ)創(chuàng)建的 FROM centos:7 #下載nginx依賴源 RUN yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel #下載wget RUN yum install -y wget #下載nginx RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz #解壓nginx RUN tar -zxvf nginx-1.9.7.tar.gz #執(zhí)行編譯命令,通過--prefix=安裝目錄,指定nginx安裝目錄 RUN ./configure --prefix=/usr/localinx && make && make install #設(shè)置工作目錄 WORKDIR nginx-1.9.7 #暴露端口80和443 EXPOSE 80 EXPOSE 443 #將虛擬機文件復(fù)制到容器里 ADD run.sh /run.sh #給run.sh授予可執(zhí)行權(quán)限 RUN chmod 775 /run.sh #啟動容器后執(zhí)行run.sh腳本 CMD ["/run.sh"]
在該文件夾里再編寫一個run.sh
vim run.sh run.sh里的內(nèi)容: #!/bin/bash /usr/local/nginx/sbin/nginx
docker build 構(gòu)建鏡像
docker build -t my_build:nginx1 .
docker images查看鏡像:
使用該鏡像構(gòu)建容器:
可以看到鏡像成功啟動,東西也下載安裝好了,工作目錄設(shè)置好了,文件也復(fù)制到容器里了
到此這篇關(guān)于dockerfile指令構(gòu)建docker鏡像的示例代碼的文章就介紹到這了,更多相關(guān)dockerfile指令構(gòu)建docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用docker部署influxdb與 mongo的常用命令
這篇文章主要介紹了使用docker部署influxdb與 mongo的常用命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05docker安裝elastic?search的詳細(xì)過程
這篇文章主要介紹了docker安裝elastic?search的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06Docker數(shù)據(jù)存儲之tmpfs mounts詳解
今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲之tmpfs mounts詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境
這篇文章主要介紹了詳解如何利用docker快速構(gòu)建MySQL主從復(fù)制環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05