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構(gòu)建過程

基礎(chǔ)知識:

  1. 每個保留關(guān)鍵字都要大寫。

  2. 執(zhí)行是從上而下的。

  3. # 表示注釋。

  4. 每個指令都會創(chuàng)建一個新的鏡像。

Dockerfile的指令

image-20200725190032433.png
FROM #基礎(chǔ)鏡像,一切從這里構(gòu)建
MAINTAINER #鏡像是誰寫的 ,姓名+郵箱
RUN #鏡像構(gòu)建的時候需要的運行命令
ADD #添加額外的鏡像
WORKDIR #工作目錄
VOLUME #掛載的目錄
EXPOSE #暴露端口  和 -p的效果一樣
CMD #指定容器需要啟動的時候運行的命令,只會最后一個生效,可被替代
ENTRYPOINT #指定容器需要啟動的時候運行的命令,可以追加命令
ONBUILD #當(dāng)構(gòu)建一個被繼承DockerFile 這個時候就會運行ONBUILD的指令。觸發(fā)指令。
COPY # 類似于ADD ,將我們文件拷貝到鏡像中。
ENV #構(gòu)建的時候設(shè)置環(huán)境變量

實戰(zhàn)構(gòu)建自己的centos

我們發(fā)現(xiàn)docker鏡像中的centos很多功能被刪減過。

所以我們自己構(gòu)建一個自定義的centos鏡像,添加vim和net-tools

#1. 編寫dockerfile
[root@master-node dockerfile]# cat docker dockerfile 
FROM centos

MAINTAINER summer<1260670909@qq.com>

ENV MYPATH /usr/local

WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD /bin/bash

# 2.通過dockerfile來構(gòu)建自己的鏡像
[root@master-node dockerfile]# docker build -f dockerfile -t mycentos:1.0 .

# 3.測試運行

擴展:

通過history來查看鏡像組成過程

[root@master-node dockerfile]# docker history tomcat
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
b4f6a90c69a4        2 days ago          /bin/sh -c #(nop)  CMD ["catalina.sh" "run"]    0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  EXPOSE 8080                  0B                  
<missing>           2 days ago          /bin/sh -c set -e  && nativeLines="$(catalin…   0B                  
<missing>           2 days ago          /bin/sh -c set -eux;   savedAptMark="$(apt-m…   20MB                
<missing>           2 days ago          /bin/sh -c #(nop)  ENV TOMCAT_SHA512=077c3e6…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV TOMCAT_VERSION=9.0.37    0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV TOMCAT_MAJOR=9           0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV GPG_KEYS=05AB33110949…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV LD_LIBRARY_PATH=/usr/…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV TOMCAT_NATIVE_LIBDIR=…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop) WORKDIR /usr/local/tomcat     0B                  
<missing>           2 days ago          /bin/sh -c mkdir -p "$CATALINA_HOME"            0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV PATH=/usr/local/tomca…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV CATALINA_HOME=/usr/lo…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  CMD ["jshell"]               0B                  
<missing>           2 days ago          /bin/sh -c set -eux;   dpkgArch="$(dpkg --pr…   323MB               
<missing>           2 days ago          /bin/sh -c #(nop)  ENV JAVA_URL_VERSION=11.0…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV JAVA_BASE_URL=https:/…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV JAVA_VERSION=11.0.8      0B                  
<missing>           2 days ago          /bin/sh -c { echo '#/bin/sh'; echo 'echo "$J…   27B                 
<missing>           2 days ago          /bin/sh -c #(nop)  ENV PATH=/usr/local/openj…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV JAVA_HOME=/usr/local/…   0B                  
<missing>           2 days ago          /bin/sh -c #(nop)  ENV LANG=C.UTF-8             0B                  
<missing>           2 days ago          /bin/sh -c set -eux;  apt-get update;  apt-g…   11.1MB              
<missing>           3 days ago          /bin/sh -c apt-get update && apt-get install…   146MB               
<missing>           3 days ago          /bin/sh -c set -ex;  if ! command -v gpg > /…   17.5MB              
<missing>           3 days ago          /bin/sh -c apt-get update && apt-get install…   16.5MB              
<missing>           3 days ago          /bin/sh -c #(nop)  CMD ["bash"]                 0B                  
<missing>           3 days ago          /bin/sh -c #(nop) ADD file:89dfd7d3ed77fd5e0…   114MB         

CMD 和 ENTRYPOINT 的區(qū)別

CMD #指定容器需要啟動的時候運行的命令,只會最后一個生效,可被替代
ENTRYPOINT #指定容器需要啟動的時候運行的命令,可以追加命令
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容