docker打包 commit和Dockerfile

      網友投稿 1251 2022-05-29

      構建鏡像

      構建鏡像的兩種方法:docker commit和docker build。通過這2種方式構建出來的鏡像大小都是一樣的;那么既然這2種方式都一樣,我們應該使用哪一種呢?

      commit

      用戶提交對容器的修改,并生成新的鏡像。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      dockerFile

      特點

      每個指令都必須是大寫

      執行順序是從上到下順序執行

      # 表示注釋

      每個指令都會創建提交一個新的鏡層,并提交(每個指令都是一個docker commit)

      dockerFile是面向開發人員的;由開發人員構建鏡像,就需要寫dockerFile文件,然后將鏡像交付給運維直接部署即可;不需要運維配置繁雜的jvm參數命令;

      dockerFile正在逐漸稱為企業的交付標注,所以開發人員必須要掌握;

      dickerFile 指令

      使用dockerFile創建鏡像,實際上就是用腳本文件的方式創建;腳本內指令如下

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      指令用法

      FROM

      FROM centos

      1

      MAINTAINER

      MAINTAINER yexindong

      1

      ENV

      # 環境變量可以隨便設置,MYPATH為key ,/user/local是值 ENV MYPATH /user/local

      1

      2

      EXPOSE

      # 開放單個端口 EXPOSE 80 # 開放多個端口 EXPOSE 22 80 8080 3306 8009 8090

      1

      2

      3

      4

      5

      CMD

      # 第一種用法 CMD echo 11 # 第二種用法 CMD ["echo","33"]

      1

      2

      3

      4

      COPY

      COPY

      1

      CMD 和 ENTRYPOINT 的區別

      CMD 相同的指令只有最后一個會生效

      ENTRYPOINT可以追加命令;

      使用 dockerFile創建鏡像

      那么現在我們就自己一個tomcat的鏡像,首先創建一個文件 dockerFile_1

      vim dockerFile_1

      1

      腳本內容如下,注意,腳本內的關鍵字必須是大寫的,VOLUME 是匿名掛載的

      FROM centos RUN yum install net-tools.x86_64 -y RUN yum -y install vim RUN yum install vi -y VOLUME ["/data/tomcat_file_1","/data/tomcat_file_2"] EXPOSE 8080 # 打印當前時間 CMD date WORKDIR /root

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      創建好腳本文件后,就可以就行構建了,注意后面那個點

      docker build -f dockerFile_1 -t xindong_centos_3:1.1 . # 說明 -f 需要構建的腳本文件 -t tag的縮寫,構建后的鏡像名稱:版本號

      1

      2

      3

      4

      5

      運行命令后展示以下信息,就表示已經構建成功了

      Sending build context to Docker daemon 1.802GB Step 1/8 : FROM centos ---> 5d0da3dc9764 Step 2/8 : RUN yum install net-tools.x86_64 -y ---> Using cache ---> a3d489e47eeb Step 3/8 : RUN yum -y install vim ---> Using cache ---> f7dfc03c0fd9 Step 4/8 : RUN yum install vi -y ---> Using cache ---> c111382ba821 Step 5/8 : VOLUME ["data/tomcat_file_1","/data/tomcat_file_2"] ---> Using cache ---> 37a5e93cbe4a Step 6/8 : EXPOSE 8080 ---> Using cache ---> 1a2305853377 Step 7/8 : CMD date ---> Using cache ---> 8102785d418d Step 8/8 : WORKDIR /root ---> Using cache ---> ad8a585d32e3 Successfully built ad8a585d32e3 Successfully tagged xindong_centos_3:latest

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      查看鏡像,這就是我們剛剛創建好的鏡像

      [root@VM_0_5_centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE xindong_tomcat 1.1 f72aa7e90980 37 seconds ago 680MB

      1

      2

      3

      運行這個鏡像

      # 通過鏡像id運行 docker run -d 鏡像id/鏡像名稱 # 通過鏡像名稱運行 docker run -d 鏡像名稱:版本號

      1

      docker打包 commit和Dockerfile

      2

      3

      4

      5

      6

      7

      鏡像保存、加載

      如果需要將自己構建的鏡像發送給別人,又不想通過倉庫來共享,就可以用鏡像保存的功能,

      鏡像保存

      首先我們將鏡像以文件的方式保存到本地磁盤,使用save命令

      docker save 鏡像id/鏡像名稱 -o /本地目錄/文件名稱 # 比如這樣 docker save ad8a585d32e3 -o /root/dockerFile/xx.tar # 運行后,就可以看到,文件已經保存成功了 [root@VM_0_5_centos dockerFile]# ll total 356440 -rw------- 1 root root 364991488 Oct 28 18:45 xx.tar

      1

      2

      3

      4

      5

      6

      7

      加載已保存的鏡像

      使用load命令加載,看到如下內容,表示鏡像已經加載成功了

      [root@VM_0_5_centos dockerFile]# docker load -i /root/dockerFile/xx.tar 2fefb3e7f055: Loading layer [==================================================>] 47.6MB/47.6MB 8b589f61fd94: Loading layer [==================================================>] 58.82MB/58.82MB 753a6b1d88c8: Loading layer [==================================================>] 19.99MB/19.99MB Loaded image ID: sha256:ad8a585d32e34b301aab4b278704a908f6eca53884fd531a79859dd6054a22ae

      1

      2

      3

      4

      5

      接下來我們看看鏡像已經加載好了,但是還沒有名字

      [root@VM_0_5_centos dockerFile]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ad8a585d32e3 2 hours ago 356MB

      1

      2

      3

      接下來使用tag命令給這個鏡像起個名字和版本號吧

      [root@VM_0_5_centos dockerFile]# docker tag ad8a585d32e3 xindong_tomcat_2:1.0 # 在看看鏡像,已經有名字了 [root@VM_0_5_centos dockerFile]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE xindong_tomcat_2 1.0 ad8a585d32e3 2 hours ago 356MB

      1

      2

      3

      4

      5

      6

      區別

      使用commit的話,其他人或者過一段時間后自己也不知道這個鏡像是怎么做出來的,都安裝了什么。。但是使用Dockerfile構建的鏡像,我們能夠很清楚看到是執行了哪些命令。

      既然使用docker commit這么不方便,那我們為什么還要學習它呢?其實仔細想一下docker build的每一步構建出來的鏡像是不是就是通過docker commit構建出來的。因此學習docker commit可以讓我們更好的理解docker build;

      其實說白了,不管是docker commit 和是dockefile,都是將目前已有的鏡像經過處理后在生成一個新的鏡像,它們之間的流程圖如下

      Docker 鏡像服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WinForm——TableLayoutPanel實例
      下一篇:關于RabbitMQ的一些面試題
      相關文章
      精品日韩亚洲AV无码| 国产精品亚洲w码日韩中文| 亚洲色婷婷一区二区三区| 亚洲AV无码不卡在线观看下载| 亚洲av乱码一区二区三区按摩| 学生妹亚洲一区二区| 天堂亚洲国产中文在线| 亚洲一区二区三区免费视频| 亚洲一区二区三区在线 | 亚洲国产中文v高清在线观看| 国产精品亚洲а∨无码播放麻豆| 日韩欧美亚洲中文乱码| 国产精品观看在线亚洲人成网| 亚洲国产精品无码中文lv| 亚洲aⅴ无码专区在线观看| 青青青亚洲精品国产| 免费在线观看亚洲| 相泽亚洲一区中文字幕| 亚洲乱码中文字幕综合| 久久青青成人亚洲精品| 亚洲成人中文字幕| 亚洲网址在线观看| 亚洲成a人片在线网站| 精品久久久久久亚洲精品| 亚洲人成网站999久久久综合| 久久亚洲欧美国产精品| 亚洲欧洲国产成人综合在线观看 | 亚洲网站视频在线观看| 色拍自拍亚洲综合图区| 91亚洲视频在线观看| 自拍偷区亚洲国内自拍| 亚洲AV无码成人精品区日韩| 偷自拍亚洲视频在线观看| 狠狠亚洲狠狠欧洲2019| 亚洲av永久无码制服河南实里 | 亚洲最大的成网4438| 亚洲一区二区三区在线观看蜜桃| 亚洲男同gay片| 亚洲精品视频免费| 亚洲高清国产拍精品26U| 亚洲神级电影国语版|