人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

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

發(fā)布日期:2021-12-27 08:04 | 文章來源:CSDN

在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": "",
    "Entrypoi

根據(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ù)習下構(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)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部