国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - Dockerfile中的保留字指令的過程解析

Dockerfile中的保留字指令的過程解析

2021-11-24 16:40寧在春 服務器知識

Dockerfile是用來構建Docker鏡像的構建文件,由一系列命令和參數構成的腳本,本文重點給大家介紹Dockerfile中的保留字指令的過程解析,感興趣的朋友跟隨小編一起看看吧

之前簡單學過Docker,當時是為了快速部署一個項目,過的很快,對于Dockerfile文件的編寫,有些顯的陌生。

所以就寫了這篇文章。希望能夠幫助到大家哦!!!

一、Dockerfile是什么?

概念:

Dockerfile是用來構建Docker鏡像的構建文件,由一系列命令和參數構成的腳本

構建三步驟:

  • 編寫Dockerfile文件
  • docker build
  • docker run

Centos案例:

centos案例:

FROM scratch  #真正的基礎鏡像,
ADD centos-7-x86_64-docker.tar.xz /

# label 說明的意思
LABEL \  
    org.label-schema.schema-version="1.0" \
    org.label-schema.name="CentOS Base Image" \
    org.label-schema.vendor="CentOS" \
    org.label-schema.license="GPLv2" \
    org.label-schema.build-date="20201113" \
    org.opencontainers.image.title="CentOS Base Image" \
    org.opencontainers.image.vendor="CentOS" \
    org.opencontainers.image.licenses="GPL-2.0-only" \
    org.opencontainers.image.created="2020-11-13 00:00:00+00:00"

CMD ["/bin/bash"] #最后一行執行的命令

在哪找到的勒,在hub.docker.com上找到滴:centos。

我們不會,但是可以先去看看人家怎么寫的,抄作業這事,我想大家都熟悉吧。俗稱CV大法。

 

二、Dockerfile構建過程分析

入門知識:

每條保留字指令(今天的重點)都必須為大寫字母并且后面要跟隨至少一個參數

如:

FROM scratch  #真正的基礎鏡像,
ADD centos-7-x86_64-docker.tar.xz /

指令按照從上到下,順序執行

#表示注釋。

#這就是注釋

每條指令都會創建一個新的鏡像層,并對鏡像進行提交。

就如下面這樣,可以套娃一樣。

Dockerfile中的保留字指令的過程解析

Dockerfile執行流程分析:docker從基礎鏡像運行一個容器執行一條指令并對容器作出修改執行類似docker commit的操作提交一個新的鏡像層。docker再基于剛提交的鏡像運行一個新容器執行dockerfile中的下一條指令直到所有指令都執行完成

后文有案例,結合案例回過來看更容易理解。

小小番外:

在現階段,我們將DockerfileDocker鏡像和Docker容器看待為軟件的三個不同階段。

Dockerfile面向開發--->Docker鏡像成為交付標準--->Docker容器則涉及部署與運維

Dockerfile中定義了進程所需要的一切東西,以前需要依賴的環境變量、依賴包、運行時環境等都被寫入到Dockerfile文件中啦。比起之前你在Liunx服務器中,下載那么那么多軟件,配置那么那么多,真的是簡單蠻多,起碼對于我這個菜雞來說用Docker部署真的簡單了蠻多的。

Docker鏡像是在用Dockerfile定義了一個文件后,docker build 時產生的一個Docker鏡像,當運行時Docker鏡像時,才會真正開始提供服務。

Docker容器就是運行起來即可提供服務的。

 

三、Dockerfile保留字指令

Dockerfiel保留字指令大致有以下:

FROMMAINTANINERRUNEXPOSEWORKDIRENVADDCOPYVOLUMECMDENTRYPOINTONBUILD

 

3.1、FROM

基礎鏡像,即當前新鏡像是基于哪個鏡像創建的。

#基于openjdk:8 創建鏡像
FROM openjdk:8

 

3.2、MAINTAINER

鏡像維護者的姓名和郵箱地址

MAINTAINER 寧在春crush@163.com

 

3.3、RUN

容器構建時需要運行的指令

RUN mkdir -p /conf/my.cn

 

3.4、EXPOSE

當前容器對外暴露的端口

#暴露出MyCat的所需端口
EXPOSE 8066 9066

 

3.5、WORKDIR

指定在創建容器后,終端默認登錄的進來工作目錄

#容器數據卷,用于數據保存和持久化工作
WORKDIR /usr/local/mycat

 

3.6、ENV

用來在構建鏡像過程中設置環境變量

#用來在構建鏡像過程中設置環境變量ENV MYCAT_HOME=/usr/local/mycat

這個環境變量可以在后續的任何RUN指令中使用,這就如同在命令前面指定了環境變量前綴一樣;也可以在其它指令中直接使用這些環境變量。

如:

RUN $MYCAT_HOME/mycat

 

3.7、ADD 和 COPY

ADD:

將宿主機目錄下的文件拷貝進鏡像,并且ADD命令會自動處理URL和解壓tar壓縮包

ADD centos-6-docker.tar.xz / 

COPY:

類似ADD,拷貝文件和目錄到鏡像中。

將從構建上下文目錄中<源路徑>的文件/目錄復制到新的一層的鏡像內的<目標路徑>位置

COPY src destCOPY ["src" "dest"]

 

3.8、VOLUME

容器數據卷,用于數據持久化和數據保存。

#將mycat的配置文件的地址暴露出映射地址,啟動時直接映射宿主機的文件夾VOLUME /usr/local/mycat

 

3.9、CMD 和 ENTRYPOINT

CMD

CMD的指令和RUN相似,也是兩種格式:

shell格式:CMD<命令>exec 格式:CMD ["可執行文件“,”參數1“,”參數2“.....]

Dockerfile中可以有多個CMD指令,但只有最后一個生效,CMD會被docker run 之后的參數替換。

ENTRYPOINT

指定一個容器啟動時要運行的命令。

ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數。

區別:

在這里先簡單說明一下區別,你可以將CMD理解為覆蓋

CMD cat /conf/my.cnfCMD /bin/bash

這兩條指令都寫在Dockerfile文件中,只會執行CMD /bin/bash ,而不會執行CMD cat /conf/my.cnf,因為CMD /bin/bash把上一條直接覆蓋掉了。

ENTRYPOINT則不同,你可以將ENTRYPOINT簡單理解為追加。

主要體現在docker run 上,如果使用dockerfile文件中最后是CMD結尾,則在運行時不能夠額外追加命令,否則會覆蓋掉Dockerfile中的CMD命令。

Dockerfile文件中最后一行為ENTRYPOINT結尾時,你可以在docker run 命令后追加一些命令.

 

3.10、ONBUILD

當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承后,父鏡像的onbuild被觸發。

 

四、實戰案例

 

4.1、制作一個自己的Centos鏡像

 

4.1.1、引入:

我們先從阿里云上拉取一個centos看看,看看有哪些問題,然后我們再進行自定義。

docker pull centos # 拉取鏡像docker run -it centos #運行鏡像# ===== 測試====vim ceshi.txtifconfig pwd

Dockerfile中的保留字指令的過程解析

為什么會這樣?因為docker倉庫中的Centos是精簡版,其只有內核,沒有其它的東西。

要求自定義的Centos能夠解決上述問題。

 

4.1.2、編寫Dockerfile文件

為我們自定義的Centos 編寫Dockerfile文件

FROM centosMAINTAINER 寧在春ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80 CMD echo $MYPATHCMD echo "success"CMD /bin/bash  #只會運行最后一個

Dockerfile中的保留字指令的過程解析

然后把這個復制進去即可。

mkdir -p /usr/local/docker/mycentos # 自己創建存放的位置vim Dockerfile

Dockerfile中的保留字指令的過程解析

 

4.1.3、構建centos鏡像

docker build -f /usr/local/docker/mycentos/Dockerfile  -t mycentos:1.1 .

解釋:

-f:后面跟隨的是Dockerfile 文件

-t :后面跟隨的鏡像名和版本號。

最后的小數點:就表明是當前目錄。

docker build -f Dockerfile文件 -t 鏡像名:tag .

當dockerfile文件命名為dockerfile時并且在當前目錄下時可簡寫為:

docker build  -t 鏡像名:tag .docker build   -t mycentos:1.1 .

執行:

Dockerfile中的保留字指令的過程解析

看到最后的這個就是代表成功了。

Dockerfile中的保留字指令的過程解析

docker images 查看全部鏡像:

Dockerfile中的保留字指令的過程解析

 

4.1.4、運行Centos鏡像

docker run -it mycentos:1.3pwdifconfig

Dockerfile中的保留字指令的過程解析

之所以我們進去容器的目錄會從/切換到/usr/local是因為在dockerfile文件中已經寫明。

ENV MYPATH /usr/localWORKDIR $MYPATH

 

4.1.5、查看鏡像的變更歷史

docker history mycentos:1.1

Dockerfile中的保留字指令的過程解析

在這里也可以看出來,鏡像它是由Dockerfile文件中的指令,一層一層構建出來的。

 

4.2、ONBUILD示例

率先構建一個夫鏡像

編寫dockerfile文件,命名為dockerfile2

FROM centosRUN yum -y install  curlONBUILD RUN echo "我被子鏡像繼承了,輸出此條語句"CMD ["crul", "-s","http://ip.cn"]
docker build -f /usr/local/docker/mycentos/Dockerfile2 -t my_father_centos .

Dockerfile中的保留字指令的過程解析

構建一個鏡像繼承夫鏡像

編寫dockerfile文件,命名為dockerfile3

FROM my_father_centosRUN yum -y install  curlCMD ["crul", "-s","http://ip.cn"]
docker build -f /usr/local/docker/mycentos/Dockerfile3 -t my_son_centos .

Dockerfile中的保留字指令的過程解析

可以看到父鏡像中的語句被輸出了。

到此這篇關于Dockerfile中的保留字指令講解的文章就介紹到這了,更多相關Dockerfile保留字指令內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/wxhn/p/15497159.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲性视频 | 色爱区成人综合网 | 成人欧美一区二区三区在线播放 | 欧美精品一二三区 | 日韩有码在线播放 | 免费日韩视频 | 女人爽到高潮aaaa电影 | 在线观看欧美 | 国产黄视频在线观看 | 久久久久国产 | 超碰在线91 | 亚洲视频在线播放免费 | 精品www| 福利视频二区 | 久热精品在线视频 | 国产一级视频免费观看 | 国产操片 | 欧美日韩中文字幕在线 | 国产精品成人在线 | 日本久久久久久久久久久久 | 亚洲一区 中文字幕 | 可以免费在线观看av的网站 | 天天干人人 | 国产精品久久久久久久久久妞妞 | 欧美久久久 | 天天爽夜夜爽夜夜爽精品视频 | 色综合色综合网色综合 | 欧美日韩综合 | 国产亚洲精品精品国产亚洲综合 | 日韩成人av电影 | 在线一二三区 | 99亚洲 | 国产成人久久精品一区二区三区 | 日韩欧美精品在线 | 99精品欧美一区二区三区综合在线 | 亚洲第一成人在线视频 | 成人在线观看网 | 久久久精品国产亚洲 | 国产精品免费观看 | 91精品久久久久久久久 | 韩日中文字幕 |