婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)

Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)

熱門標(biāo)簽:南充電銷外呼系統(tǒng) 海外工廠地圖標(biāo)注 南昌外呼系統(tǒng)定制 陜西辦理400電話 貴陽網(wǎng)絡(luò)外呼系統(tǒng)軟件 宿州外呼系統(tǒng)公司 信陽電銷外呼系統(tǒng)怎么樣 地圖標(biāo)注小程序 株洲電銷

在devops流程里面 構(gòu)建鏡像是一個非常重要的過程,一般構(gòu)建鏡像是寫dockerfile文件然后通過docker client來構(gòu)建的image。

docker client 會先檢查本地有沒有image,如果沒有幫你 從鏡像倉庫 pull 下來

然后解析你寫的dockerfile構(gòu)建新的image。

本文帶你了解

  • pull 命令 背后是怎么做的?
  •  build 命令 背后是怎么做的?

下篇文章帶你解析:

如果我不用docker 我如何構(gòu)建一個鏡像?

我們以微軟的aspnet2.2為基礎(chǔ)構(gòu)建一個aspnetcore項目的鏡像為例子

mcr.microsoft.com/dotnet/core/aspnet:2.2

根據(jù)基礎(chǔ)鏡像REGISTRY去獲取mainfest信息

https://mcr.microsoft.com/v2/dotnet/core/aspnet/manifests/2.2
Accept:
application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json

獲取到的內(nèi)容如下:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 4039,
    "digest": "sha256:e7e3b238011ce0f2b9350153535fe273caa01f0e7188d0b91f965b3802ddc600"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 22524609,
      "digest": "sha256:804555ee037604c40de144f9f8da0d826d38db82f15d74cded32790fe279a8f6"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 17692725,
      "digest": "sha256:970251047358aea56ba6db6975b14ff12470b75de0c2477f4445240ddd727fd4"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 2978257,
      "digest": "sha256:f3d4c41a4fd13f35c0b46f19a4e27845f4695163cc7174d908ff84836bbc2f5a"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 62145592,
      "digest": "sha256:bd391c46585f9f8d84992bbaa9087189148c1601968eaaf097d5b3ed60840e5e"
    }
  ]
}

mainfest文件里面都是摘要(digest)記錄

  • config信息摘要
  • 每個layer的摘要 (上面的例子有4個)

根據(jù)上面的config信息摘要獲取config詳情

GET:https://mcr.microsoft.com/v2/dotnet/core/aspnet/blobs/sha256:e7e3b238011ce0f2b9350153535fe273caa01f0e7188d0b91f965b3802ddc600
{
  "architecture": "amd64",
  "config": {
    "Hostname": "",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "ASPNETCORE_URLS=http://+:80",
      "DOTNET_RUNNING_IN_CONTAINER=true",
      "ASPNETCORE_VERSION=2.2.8"
    ],
    "Cmd": [
      "bash"
    ],
    "ArgsEscaped": true,
    "Image": "sha256:5ecfe4016ac8e911a94aa601a675f7204e9ccab00cbb08e7067c184ad40f34e9",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": null
  },
  "container": "14196c2f9c327d41e26682d32c7c89c4e7c78aa32f8b7501a23192035a9f4844",
  "container_config": {
    "Hostname": "",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "ASPNETCORE_URLS=http://+:80",
      "DOTNET_RUNNING_IN_CONTAINER=true",
      "ASPNETCORE_VERSION=2.2.8"
    ],
    "Cmd": [
      "/bin/sh",
      "-c",
      "curl -SL --output aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$ASPNETCORE_VERSION/aspnetcore-runtime-$ASPNETCORE_VERSION-linux-x64.tar.gz   && aspnetcore_sha512='954072376698be69acb7e277df2c243f931e10529def21dcbf9ce277609b30d462126bf8b8b3cab36476bec3d63a927b8e44e59e4d4cade23eef45956fba1ffd'   && echo \"$aspnetcore_sha512 aspnetcore.tar.gz\" | sha512sum -c -   && mkdir -p /usr/share/dotnet   && tar -zxf aspnetcore.tar.gz -C /usr/share/dotnet   && rm aspnetcore.tar.gz   && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet"
    ],
    "Image": "sha256:5ecfe4016ac8e911a94aa601a675f7204e9ccab00cbb08e7067c184ad40f34e9",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": null
  },
  "created": "2019-12-28T08:12:05.676492579Z",
  "docker_version": "3.0.8",
  "history": [
    {
      "created": "2019-12-28T04:23:47.4966447Z",
      "created_by": "/bin/sh -c #(nop) ADD file:90a2c81769a336bed3f731f44a385f2a65b0916f517a0b77c06c224579bf9a9a in / "
    },
    {
      "created": "2019-12-28T04:23:47.719507596Z",
      "created_by": "/bin/sh -c #(nop) CMD [\"bash\"]",
      "empty_layer": true
    },
    {
      "created": "2019-12-28T08:11:05.607009582Z",
      "created_by": "/bin/sh -c apt-get update   && apt-get install -y --no-install-recommends     ca-certificates         libc6     libgcc1     libgssapi-krb5-2     libicu57     liblttng-ust0     libssl1.0.2     libstdc++6     zlib1g   && rm -rf /var/lib/apt/lists/*"
    },
    {
      "created": "2019-12-28T08:11:07.64336022Z",
      "created_by": "/bin/sh -c #(nop) ENV ASPNETCORE_URLS=http://+:80 DOTNET_RUNNING_IN_CONTAINER=true",
      "empty_layer": true
    },
    {
      "created": "2019-12-28T08:11:16.475068844Z",
      "created_by": "/bin/sh -c apt-get update   && apt-get install -y --no-install-recommends     curl   && rm -rf /var/lib/apt/lists/*"
    },
    {
      "created": "2019-12-28T08:11:43.814078508Z",
      "created_by": "/bin/sh -c #(nop) ENV ASPNETCORE_VERSION=2.2.8",
      "empty_layer": true
    },
    {
      "created": "2019-12-28T08:12:05.676492579Z",
      "created_by": "/bin/sh -c curl -SL --output aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$ASPNETCORE_VERSION/aspnetcore-runtime-$ASPNETCORE_VERSION-linux-x64.tar.gz   && aspnetcore_sha512='954072376698be69acb7e277df2c243f931e10529def21dcbf9ce277609b30d462126bf8b8b3cab36476bec3d63a927b8e44e59e4d4cade23eef45956fba1ffd'   && echo \"$aspnetcore_sha512 aspnetcore.tar.gz\" | sha512sum -c -   && mkdir -p /usr/share/dotnet   && tar -zxf aspnetcore.tar.gz -C /usr/share/dotnet   && rm aspnetcore.tar.gz   && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet"
    }
  ],
  "os": "linux",
  "rootfs": {
    "type": "layers",
    "diff_ids": [
      "sha256:814c70fdae62bc26c603bfae861f00fb1c77fc0b1ee8d565717846f4df24ae5d",
      "sha256:0cf75cb98eb2e0a82631d4aff71b40ba79ff7f83e0361f696875e592a1a4cefc",
      "sha256:15e45d99c92686fb1fd61a41431d8400d7a0e8381595d09d666b0809c4f5d993",
      "sha256:579a8f1d6a123f98095c0b1a1395079f7504391fd2a8bc529dede305a2072a36"
    ]
  }
}

根據(jù)diff_ids里面去下載對應(yīng)layers

下載完后對比摘要一致,確保鏡像文件合法性

路徑規(guī)則:

https://mcr.microsoft.com/v2/dotnet/core/aspnet/blobs/sha256:XXXXXX

構(gòu)建我們的鏡像

在基礎(chǔ)鏡像的配置基礎(chǔ)上加入我們的自定義配置

  • Entrypoint
  • Cmd
  • Ports
  • Environment
  • ImageWorkingDirectory
  • Volumes
  • Labels

在基礎(chǔ)鏡像的所有的layers把我們要打包到鏡像也做成一個layer

生成的鏡像tar包解壓出來

多了一個 tar.gz文件,解壓之后 就是我們打包放進去的文件

  • 原來基礎(chǔ)鏡像有4個layer 加上我們的 共5個
  • config.json
  • manifest.json

config.json對比與基礎(chǔ)鏡像

 

我們來復(fù)習(xí)下構(gòu)建鏡像的過程 根據(jù)鏡像名稱拉取mainfest

  • 根據(jù)mainfest拉取config
  • 根據(jù)config拉取layers
  • 下載各個layer
  • 修改到基礎(chǔ)鏡像的配置(config.json和mainfest.json)
  • 加入我們要加入的文件layer

知道原理后我們可以自己寫一個工具來實現(xiàn)整個過程

我開源的docker鏡像構(gòu)建,讓你不用裝docker也能快速構(gòu)建容器鏡像

支持以下鏡像倉庫作為基礎(chǔ)鏡像構(gòu)建

  • docker hub
  • aliyun
  • 騰訊云

到此這篇關(guān)于Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)的文章就介紹到這了,更多相關(guān)Docker鏡像構(gòu)建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:石嘴山 汕頭 三明 拉薩 玉林 開封 晉城 鄭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)》,本文關(guān)鍵詞  Docker,鏡像,構(gòu)建,原理,解析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久精品国产亚洲一区二区三区| 精品福利二区三区| 国产一区999| 91成人在线精品| 中文字幕一区日韩精品欧美| 国产精品私人自拍| 日本道在线观看一区二区| 欧美精品自拍偷拍动漫精品| 日韩欧美亚洲国产另类| 欧美日韩激情一区| 粉嫩aⅴ一区二区三区四区五区| 亚洲精选一二三| 91香蕉国产在线观看软件| 丝袜诱惑制服诱惑色一区在线观看 | www激情久久| 日韩欧美aaaaaa| 日本少妇一区二区| 亚洲日本中文字幕区| 精品成人一区二区三区四区| 色婷婷久久99综合精品jk白丝| 99视频国产精品| 欧美日韩精品系列| 91网上在线视频| 成人一道本在线| 色94色欧美sute亚洲线路一久| 91麻豆国产福利精品| 在线观看视频91| 69堂亚洲精品首页| 精品福利一区二区三区| 欧美激情中文字幕一区二区| 亚洲欧洲另类国产综合| 亚洲国产aⅴ天堂久久| 久色婷婷小香蕉久久| 国产白丝网站精品污在线入口| 91在线精品秘密一区二区| 美女尤物国产一区| 一区二区在线看| 国产精品免费av| 国产性做久久久久久| 欧美一区二区三区四区高清| 欧美日韩免费视频| 亚洲国产成人一区二区三区| 亚洲观看高清完整版在线观看 | 亚洲日穴在线视频| 久久99久久久欧美国产| 国产伦精品一区二区三区视频青涩| 奇米影视一区二区三区小说| 一二三四区精品视频| 亚洲美女视频一区| 亚洲精品成人精品456| 1000精品久久久久久久久| 国产精品美女久久久久久| 亚洲国产岛国毛片在线| 国产午夜精品福利| 国产精品丝袜在线| 国产精品不卡在线观看| 亚洲欧洲美洲综合色网| 亚洲日穴在线视频| 亚洲一二三四区不卡| 亚洲国产精品精华液网站| 日韩精品一级二级| 免费成人你懂的| 国产精品一品二品| 色综合久久天天| 国产自产2019最新不卡| 久久久久成人黄色影片| 91免费版pro下载短视频| 国产精品人妖ts系列视频| 日韩av一级电影| 国产麻豆精品在线| 成人晚上爱看视频| 国产91精品露脸国语对白| 成人国产精品视频| 亚洲美女屁股眼交| 日韩精品一区二| 日韩免费高清av| 亚洲大片在线观看| 国产精品免费网站在线观看| 国产成人av影院| 国产精品福利av| 99免费精品视频| 欧美精品在线观看播放| 中文在线一区二区 | 久久久久久免费网| 一区二区不卡在线视频 午夜欧美不卡在| 天天影视网天天综合色在线播放| 国模冰冰炮一区二区| 精彩视频一区二区| 色欧美乱欧美15图片| 26uuu精品一区二区| 亚洲国产日日夜夜| 欧美精品丝袜中出| 成人小视频在线| 日韩电影在线一区| 日韩一区在线看| 26uuu另类欧美亚洲曰本| 欧美在线不卡一区| 在线观看精品一区| 91女厕偷拍女厕偷拍高清| 极品尤物av久久免费看| 蜜臀av国产精品久久久久| 精品国产髙清在线看国产毛片| 六月丁香婷婷色狠狠久久| 久久婷婷国产综合精品青草 | 日本韩国精品在线| 国产精品国产三级国产aⅴ入口| 欧美一区2区视频在线观看| 91福利国产成人精品照片| 国产一区不卡视频| 国产乱码精品1区2区3区| 老色鬼精品视频在线观看播放| 亚洲一区二区精品3399| 一区二区三区在线影院| 国产精品国产自产拍高清av王其| 久久久久久久电影| 久久久久九九视频| 久久精品人人做| 欧美韩国日本一区| 亚洲黄色小视频| 日韩电影在线一区| 国产一区二区毛片| av在线这里只有精品| 在线日韩国产精品| 欧美日韩亚洲高清一区二区| 欧美一区三区二区| 欧美日本精品一区二区三区| 91麻豆精品久久久久蜜臀| 日韩三级在线观看| 中文字幕色av一区二区三区| 欧美丰满少妇xxxxx高潮对白| 99久久久国产精品| 国产精品一区二区在线观看网站| 免费在线一区观看| 美女在线一区二区| 免费一区二区视频| 午夜精品久久久久久久99水蜜桃 | 一区二区不卡在线视频 午夜欧美不卡在| 亚洲人成精品久久久久久| 秋霞国产午夜精品免费视频| 国产酒店精品激情| 欧美日韩高清一区二区三区| 精品美女一区二区| 中文字幕中文字幕在线一区| 国产欧美一区视频| 国产欧美一二三区| 亚洲日本一区二区| 亚洲人精品午夜| 亚洲一区二区精品视频| 午夜国产精品一区| 日本不卡免费在线视频| 国产精品夜夜嗨| 91丨porny丨首页| 欧美精品色一区二区三区| 日韩精品一区二区三区中文不卡| 久久精品这里都是精品| 337p日本欧洲亚洲大胆精品| 色94色欧美sute亚洲线路一久 | 亚洲色图欧美在线| 国产成人aaa| 久久久久久9999| 成人美女视频在线观看18| 欧美激情一区二区三区四区| 国产麻豆精品在线| 国产精品亲子伦对白| 成人av资源在线| 亚洲色图第一区| 51精品国自产在线| 免费日韩伦理电影| 在线欧美日韩精品| 久久久久久免费毛片精品| 亚洲国产精品一区二区久久恐怖片 | 91精品国产入口| 国产精一品亚洲二区在线视频| 中文字幕视频一区| 欧美一区二区三区视频免费| 麻豆一区二区三| 国产精品久久夜| 欧美日韩黄视频| 久久综合资源网| 亚洲一区中文日韩| 中文一区二区在线观看| 欧美一级免费观看| 99久久精品国产毛片| 国产风韵犹存在线视精品| 一区二区三区毛片| 中文字幕国产精品一区二区| 6080国产精品一区二区| av在线综合网| 精品一区二区影视| 午夜精品一区二区三区电影天堂 | 制服.丝袜.亚洲.中文.综合| 亚洲图片有声小说| 91精品欧美综合在线观看最新| 久国产精品韩国三级视频| 久久久影院官网| 日本精品视频一区二区三区| 亚洲一区成人在线| 久久久久久久精| 91精品黄色片免费大全| 日韩欧美资源站|