久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Docker構(gòu)建鏡像的三種方式(Dockerfile初步)

      前言

      ?上篇講述了有關(guān)docker網(wǎng)絡(luò)通信部分原理以及案例,本篇文章將講述有關(guān)docker構(gòu)建鏡像的具體操作。本文將從docker構(gòu)建鏡像的方式入手,逐一講述。

      • 揭開(kāi)Docker的面紗 – 基礎(chǔ)理論梳理和安裝流程演示  http://www.sfodin.cn/Linux/2020-04/163003.htm
      • Docker基礎(chǔ)命令詳解 – 鏡像及容器操作  http://www.sfodin.cn/Linux/2020-04/163005.htm
      • 深入理解Docker的硬件資源控制與驗(yàn)證  http://www.sfodin.cn/Linux/2020-04/163006.htm
      • Docker網(wǎng)絡(luò)模式與配置Docker自定義網(wǎng)絡(luò)(bridge模式)  http://www.sfodin.cn/Linux/2020-04/163007.htm

      構(gòu)建鏡像的三種方式:

      • Dockerfile
      • 基于已有的鏡像容器進(jìn)行創(chuàng)建
      • 基于本地模板創(chuàng)建

      首先,我們?yōu)槭裁葱枰獦?gòu)建docker鏡像?只有明白了這個(gè)問(wèn)題,我們才知道構(gòu)建docker鏡像的意義或者說(shuō)價(jià)值是什么。

      答案其實(shí)很簡(jiǎn)單:docker鏡像是docker的三大核心之一,也是應(yīng)用發(fā)布的標(biāo)準(zhǔn)格式,一個(gè)完整的docker鏡像可以支持一個(gè)docker容器的運(yùn)行。我們?cè)谌萜鬟M(jìn)行相關(guān)的操作,例如安裝應(yīng)用服務(wù),假設(shè)某個(gè)業(yè)務(wù)的需求恰好需要方才安裝配置好的應(yīng)用服務(wù),我們就可以將環(huán)境以及搭建的服務(wù)生成新的鏡像提供出去。

      下面我們來(lái)具體看看這三種方式的構(gòu)建手法。

      基于Dockerfile構(gòu)建鏡像

      什么是Dockerfile?

      ? Dockerfile構(gòu)建鏡像的方式就目前而言是使用最為廣泛的,這是一種可以自動(dòng)化生成鏡像的一種方式,就類似shell腳本一樣,一個(gè)腳本執(zhí)行完就可以將一個(gè)服務(wù)安裝配置好,支持正常使用了。Dockerfile也是一樣,也是由一組指令組成的文件,其中每條指令對(duì)應(yīng)Linux中的一條命令,Docker程序?qū)⑼ㄟ^(guò)讀取Dockerfile中的指令最終生成鏡像。

      ? Dockerfile可以認(rèn)為是一個(gè)普通文件,其結(jié)構(gòu)大致分為四個(gè)部分:基礎(chǔ)鏡像信息、維護(hù)者信息、鏡像操作指令以及容器啟動(dòng)時(shí)執(zhí)行指令。并且在Dockerfile中支持以“#”開(kāi)頭的注釋。

      Docker鏡像的分層

      1. Dockerfile中的每個(gè)指令都會(huì)創(chuàng)建一個(gè)新的鏡像層
      2. 鏡像層將被緩存和復(fù)用
      3. 當(dāng)Dockerfile的指令被修改了,復(fù)制的文件變化了,或者構(gòu)建鏡像時(shí)指定的變量不同了,對(duì)應(yīng)的鏡像層緩存就會(huì)失效
      4. 某一層的鏡像緩存失效后,其之后的鏡像層緩存都會(huì)隨之失效
      5. 鏡像層是不可變的,如果在某一層中添加一個(gè)文件,然后在下一層中刪除則鏡像中依然會(huì)包含該文件

      Dockerfile編寫(xiě)規(guī)則

      Dockerfile中是基于其指令進(jìn)行編寫(xiě)的,其規(guī)則可以參考下面的表格,當(dāng)然,在編寫(xiě)Dockerfile時(shí),其格式是需要嚴(yán)格遵循的:

      除注釋外,第一行必須使用FROM指令所基于的鏡像名稱;之后使用MAINTAINER指明維護(hù)信息;然后就是一系列鏡像操作指令,如RUN、 ADD等;最后便是CMD指令來(lái)指定啟動(dòng)容器時(shí)要運(yùn)行的命令操作。其中RUN指令可以使用多條,CMD只有最后一條可以生效!

      Docker構(gòu)建鏡像的三種方式(Dockerfile初步)

      ? 本文主要是講述docker構(gòu)建鏡像的三種方式,Dockerfile的構(gòu)建具體過(guò)程筆者將在之后的文章中通過(guò)各種實(shí)際案例來(lái)講述演示,本文暫時(shí)給出一個(gè)Dockerfile文件的例子給大家參考。

      [root@localhost ~]# cat Dockerfile  #務(wù)必先指明基于的基礎(chǔ)鏡像  FORM CentOS:7  #維護(hù)該鏡像的用戶信息(自定義)  MAINTAINER lokott@123.com  #鏡像操作命令  RUN yum -y update  RUN yum -y install openssh-server  RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config  RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key  #開(kāi)啟端口  EXPOSE 22  #啟動(dòng)容器時(shí)執(zhí)行指令  CMD ["/usr/sbin/sshd","-D"]  

      基于已有鏡像構(gòu)建鏡像

      ? 上述的Dockerfile的構(gòu)建鏡像的方式是自動(dòng)化進(jìn)行的,那么手動(dòng)構(gòu)建的方式就是剩下的兩種了。

      基于已有的鏡像構(gòu)建主要是通過(guò)docker commit 命令來(lái)構(gòu)建新的鏡像,其實(shí)質(zhì)就是將一個(gè)容器里面運(yùn)行的程序以及該程序的運(yùn)行環(huán)境打包起來(lái)生成新的鏡像。

      docker commit的語(yǔ)法規(guī)則及可選項(xiàng)介紹

      Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]    Create a new image from a container's changes    Options:    -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")#作者信息    -c, --change list      Apply Dockerfile instruction to the created image    -m, --message string   Commit message #說(shuō)明信息    -p, --pause            Pause container during commit (default true) #生成過(guò)程中停止容器的運(yùn)行  

      案例:基于原有鏡像構(gòu)建新的鏡像(看實(shí)質(zhì)原理)

      1.創(chuàng)建一個(gè)容器

      [root@localhost ~]# docker create -it nginx /bin/bash  Unable to find image 'nginx:latest' locally  latest: Pulling from library/nginx  123275d6e508: Pull complete   6cd6a943ce27: Pull complete   a50b5ac4a7fb: Pull complete   Digest: sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28  Status: Downloaded newer image for nginx:latest  fb9a4cdb1b79a5e4d82177afdbe8c1f1956888733979f15ae562e0013f4e0f29    [root@localhost ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  fb9a4cdb1b79        nginx               "/bin/bash"         17 seconds ago      Created                                 vibrant_heisenberg  

      2.基于該容器使用docker commit 命令創(chuàng)建新的鏡像

      [root@localhost ~]# docker commit -m new_image -a lokott fb9a4cdb1b79 lokott:demo  sha256:bb848fe7eb3655a07e6577e05bc04ab6404549a24c49fa5d3161ceb767a048f2  [root@localhost ~]# docker images | grep lokott  lokott              demo                bb848fe7eb36        26 seconds ago           127MB  

      基于本地模板構(gòu)建鏡像

      該方式是通過(guò)導(dǎo)入操作系統(tǒng)模板文件生成鏡像,模板可以從OPENVZ開(kāi)源項(xiàng)目下載,下載地址為:http://openvz.org/Download/template/precreated

      下面直接給出例子——將debian模板壓縮包導(dǎo)入為本地鏡像

      [root@localhost ~]# ls  anaconda-ks.cfg                docker.sh             公共  視頻  文檔  音樂(lè)  debian-7.0-x86-minimal.tar.gz  initial-setup-ks.cfg  模板  圖片  下載  桌面  [root@localhost ~]# cat debian-7.0-x86-minimal.tar.gz | docker import - lokott:new  sha256:df2ce16066413515db7db8a76243fcaebbd904d10304ab467fefde852dddd9a8  [root@localhost ~]# docker images | grep new  lokott              new                 df2ce1606641        14 seconds ago           215MB  

      本文講述了docker構(gòu)建鏡像的三種方式,最重要的是上述的第一種方式使用的非常多。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)