普洱高端网站建设价格,php和mysql做租车网站,78建筑人才网,9个做简历的网站1. 镜像组成
一个标准的OCI容器镜像由index, manifest, config, image layers这几个部分组成。 以docker镜像为例#xff0c;下载的镜像文件保存在/var/lib/docker/目录下面 image/overlay2子目录下面保存着镜像相关的一些元数据 在下面的介绍主要以nginx:latest镜像为例子…1. 镜像组成
一个标准的OCI容器镜像由index, manifest, config, image layers这几个部分组成。 以docker镜像为例下载的镜像文件保存在/var/lib/docker/目录下面 image/overlay2子目录下面保存着镜像相关的一些元数据 在下面的介绍主要以nginx:latest镜像为例子
docker inspect nginx:latest
[{Id: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85,RepoTags: [nginx:latest],RepoDigests: [nginxsha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31],Parent: ,Comment: ,Created: 2021-12-29T19:28:29.892199479Z,Container: ca3e48389f7160bc9d9a892d316fcbba459344ee3679998739b1c3cd8e56f7da,ContainerConfig: {Hostname: ca3e48389f71,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.21.5,NJS_VERSION0.7.1,PKG_RELEASE1~bullseye],Cmd: [/bin/sh,-c,#(nop) ,CMD [\nginx\ \-g\ \daemon off;\]],Image: sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},DockerVersion: 20.10.7,Author: ,Config: {Hostname: ,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.21.5,NJS_VERSION0.7.1,PKG_RELEASE1~bullseye],Cmd: [nginx,-g,daemon off;],Image: sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},Architecture: amd64,Os: linux,Size: 141479488,VirtualSize: 141479488,GraphDriver: {Data: {LowerDir: /var/lib/docker/overlay2/6f894a7b66f4d1428817a444693b30b9adf85a2ae9dbcaffcde1a3e69c5e4017/diff:/var/lib/docker/overlay2/c645f15c9c993a5132afa4ce456d27af1a8119c380411374f57d5c8844b7d8b8/diff:/var/lib/docker/overlay2/f3b266fa677b6c553d3b2145135a3e1aa814f35b05467fe1500ad78a1a9cb166/diff:/var/lib/docker/overlay2/602a87b98d429966c3da272b5e08b95aa8a78d8505175bfd0c43f03dfd18f290/diff:/var/lib/docker/overlay2/e859f64556e9fe63bb08299584dc568b5f5a13b9a6a995de399a7fa020359423/diff,MergedDir: /var/lib/docker/overlay2/ce4bb4283e6fe5550b799d88dbec1f117e6bd8a5f33a17c8818df6e4bc76ce17/merged,UpperDir: /var/lib/docker/overlay2/ce4bb4283e6fe5550b799d88dbec1f117e6bd8a5f33a17c8818df6e4bc76ce17/diff,WorkDir: /var/lib/docker/overlay2/ce4bb4283e6fe5550b799d88dbec1f117e6bd8a5f33a17c8818df6e4bc76ce17/work},Name: overlay2},RootFS: {Type: layers,Layers: [sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f,sha256:e379e8aedd4d72bb4c529a4ca07a4e4d230b5a1d3f7a61bc80179e8f02421ad8,sha256:b8d6e692a25e11b0d32c5c3dd544b71b1085ddc1fddad08e68cbd7fda7f70221,sha256:f1db227348d0a5e0b99b15a096d930d1a69db7474a1847acbc31f05e4ef8df8c,sha256:32ce5f6a5106cc637d09a98289782edf47c32cb082dc475dd47cbf19a4f866da,sha256:d874fd2bc83bb3322b566df739681fbd2248c58d3369cb25908d68e7ed6040a6]},Metadata: {LastTagTime: 0001-01-01T00:00:00Z}}
]2. distribution 目录
diffid-by-digest 保存了digest(layerID)-diffID的映射关系。 v2metadata-by-diffid 保存了diffid - (digest,repository)的映射关系。 digest(layerID) 就是 pull 镜像时的 hash ID拉取的镜像层文件是压缩文件压缩态。 diffID 是 docker inspect 查看到的 镜像层 hash ID此时镜像层文件是解压缩的解压缩态。 因此虽说这两种 ID 都表示 镜像层 hash ID但一个是压缩的一个是解压缩的所以 hash 运算后不一致。 拿上面nginx:latest镜像为例RootFS中最上面一层镜像的diffID为sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f, 可以看到diffID和DigestlayerIDa2abf6c4d29d43a4bf9fbb769f524d0fb36a2edab49819c1bf3e76f409f953ea可以相互对应到
3. imagedb 目录
保存镜像的元数据信息两个子文件夹 content/ 和 metadata/ tree /var/lib/docker/image/overlay2/imagedb可以查看此目录的结构 打开content/sha256目录下以镜像ID命名的文件我们可以看到镜像的元数据信息(config文件内容)包括了镜像架构、操作系统 、默认配置、创建时间、历史信息和rootfs等 cat /var/lib/docker/image/overlay2/imagedb/content/sha256/605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85上面的
nginx:latest的image id。
{architecture: amd64,config: {Hostname: ,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.21.5,NJS_VERSION0.7.1,PKG_RELEASE1~bullseye],Cmd: [nginx,-g,daemon off;],Image: sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},container: ca3e48389f7160bc9d9a892d316fcbba459344ee3679998739b1c3cd8e56f7da,container_config: {Hostname: ca3e48389f71,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.21.5,NJS_VERSION0.7.1,PKG_RELEASE1~bullseye],Cmd: [/bin/sh,-c,#(nop) ,CMD [\nginx\ \-g\ \daemon off;\]],Image: sha256:82941edee2f4d17c55563bb926387c3ae39fa1a99777f088bc9d3db885192209,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},created: 2021-12-29T19:28:29.892199479Z,docker_version: 20.10.7,history: [{created: 2021-12-21T01:22:43.418913408Z,created_by: /bin/sh -c #(nop) ADD file:09675d11695f65c55efdc393ff0cd32f30194cd7d0fbef4631eebfed4414ac97 in / },{created: 2021-12-21T01:22:43.799429634Z,created_by: /bin/sh -c #(nop) CMD [\bash\],empty_layer: true},{created: 2021-12-21T03:00:06.15011478Z,created_by: /bin/sh -c #(nop) LABEL maintainerNGINX Docker Maintainers docker-maintnginx.com,empty_layer: true},{created: 2021-12-29T19:28:08.071260391Z,created_by: /bin/sh -c #(nop) ENV NGINX_VERSION1.21.5,empty_layer: true},{created: 2021-12-29T19:28:08.248669935Z,created_by: /bin/sh -c #(nop) ENV NJS_VERSION0.7.1,empty_layer: true},{created: 2021-12-29T19:28:08.472939138Z,created_by: /bin/sh -c #(nop) ENV PKG_RELEASE1~bullseye,empty_layer: true},{created: 2021-12-29T19:28:27.976946316Z,created_by: /bin/sh -c set -x addgroup --system --gid 101 nginx adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos \nginx user\ --shell /bin/false --uid 101 nginx apt-get update apt-get install --no-install-recommends --no-install-suggests -y gnupg1 ca-certificates NGINX_GPGKEY573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; found; for server in hkp://keyserver.ubuntu.com:80 pgp.mit.edu ; do echo \Fetching GPG key $NGINX_GPGKEY from $server\; apt-key adv --keyserver \$server\ --keyserver-options timeout10 --recv-keys \$NGINX_GPGKEY\ foundyes break; done; test -z \$found\ echo 2 \error: failed to fetch GPG key $NGINX_GPGKEY\ exit 1; apt-get remove --purge --auto-remove -y gnupg1 rm -rf /var/lib/apt/lists/* dpkgArch\$(dpkg --print-architecture)\ nginxPackages\ nginx${NGINX_VERSION}-${PKG_RELEASE} nginx-module-xslt${NGINX_VERSION}-${PKG_RELEASE} nginx-module-geoip${NGINX_VERSION}-${PKG_RELEASE} nginx-module-image-filter${NGINX_VERSION}-${PKG_RELEASE} nginx-module-njs${NGINX_VERSION}${NJS_VERSION}-${PKG_RELEASE} \ case \$dpkgArch\ in amd64|arm64) echo \deb https://nginx.org/packages/mainline/debian/ bullseye nginx\ /etc/apt/sources.list.d/nginx.list apt-get update ;; *) echo \deb-src https://nginx.org/packages/mainline/debian/ bullseye nginx\ /etc/apt/sources.list.d/nginx.list tempDir\$(mktemp -d)\ chmod 777 \$tempDir\ savedAptMark\$(apt-mark showmanual)\ apt-get update apt-get build-dep -y $nginxPackages ( cd \$tempDir\ DEB_BUILD_OPTIONS\nocheck parallel$(nproc)\ apt-get source --compile $nginxPackages ) apt-mark showmanual | xargs apt-mark auto /dev/null { [ -z \$savedAptMark\ ] || apt-mark manual $savedAptMark; } ls -lAFh \$tempDir\ ( cd \$tempDir\ dpkg-scanpackages . Packages ) grep ^Package: \$tempDir/Packages\ echo \deb [ trustedyes ] file://$tempDir ./\ /etc/apt/sources.list.d/temp.list apt-get -o Acquire::GzipIndexesfalse update ;; esac apt-get install --no-install-recommends --no-install-suggests -y $nginxPackages gettext-base curl apt-get remove --purge --auto-remove -y rm -rf /var/lib/apt/lists/* /etc/apt/sources.list.d/nginx.list if [ -n \$tempDir\ ]; then apt-get purge -y --auto-remove rm -rf \$tempDir\ /etc/apt/sources.list.d/temp.list; fi ln -sf /dev/stdout /var/log/nginx/access.log ln -sf /dev/stderr /var/log/nginx/error.log mkdir /docker-entrypoint.d},{created: 2021-12-29T19:28:28.390440509Z,created_by: /bin/sh -c #(nop) COPY file:65504f71f5855ca017fb64d502ce873a31b2e0decd75297a8fb0a287f97acf92 in / },{created: 2021-12-29T19:28:28.640632824Z,created_by: /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b03c4e6c8c513ae014f691fb05d530257dfffd07035c1b75da in /docker-entrypoint.d },{created: 2021-12-29T19:28:28.864872406Z,created_by: /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7de297435e32af634f29f7132ed0550d342cad9fd20158258 in /docker-entrypoint.d },{created: 2021-12-29T19:28:29.113627588Z,created_by: /bin/sh -c #(nop) COPY file:09a214a3e07c919af2fb2d7c749ccbc446b8c10eb217366e5a65640ee9edcc25 in /docker-entrypoint.d },{created: 2021-12-29T19:28:29.296888541Z,created_by: /bin/sh -c #(nop) ENTRYPOINT [\/docker-entrypoint.sh\],empty_layer: true},{created: 2021-12-29T19:28:29.498026198Z,created_by: /bin/sh -c #(nop) EXPOSE 80,empty_layer: true},{created: 2021-12-29T19:28:29.705311925Z,created_by: /bin/sh -c #(nop) STOPSIGNAL SIGQUIT,empty_layer: true},{created: 2021-12-29T19:28:29.892199479Z,created_by: /bin/sh -c #(nop) CMD [\nginx\ \-g\ \daemon off;\],empty_layer: true}],os: linux,rootfs: {type: layers,diff_ids: [sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f,sha256:e379e8aedd4d72bb4c529a4ca07a4e4d230b5a1d3f7a61bc80179e8f02421ad8,sha256:b8d6e692a25e11b0d32c5c3dd544b71b1085ddc1fddad08e68cbd7fda7f70221,sha256:f1db227348d0a5e0b99b15a096d930d1a69db7474a1847acbc31f05e4ef8df8c,sha256:32ce5f6a5106cc637d09a98289782edf47c32cb082dc475dd47cbf19a4f866da,sha256:d874fd2bc83bb3322b566df739681fbd2248c58d3369cb25908d68e7ed6040a6]}
}image元数据中layer的diffID是以低层到高层的顺序记录的
4. layerdb 目录
保存镜像层的关联关系layerdb/sha256下的目录名称是以layer的chainID来命名的它的计算方式为
if layer是最底层没有任何父layerchainID diffID
else chainID(n)sha256sum(chainID[n-1)] diffID[n])举例查看某一镜像层 chainID 目录下的内容 cat /var/lib/docker/image/overlay2/layerdb/sha256/2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f这是最底层所以chainID[0] diffID[0]。 sizelayer文件的大小 cache-id存储驱动通过cache-id索引到layer的实际文件内容 diffdiffID 计算第二层 chainID[1] sha256sum(diffID[0] diffID[1])
echo -n sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f sha256:e379e8aedd4d72bb4c529a4ca07a4e4d230b5a1d3f7a61bc80179e8f02421ad8 | sha256sum | awk {print $1} 输出780238f18c540007376dd5e904f583896a69fe620876cabc06977a3af4ba4fb5 parent父layer的chainID 其余的和上面一样其余层数也是如此 通过chainID可以从/var/lib/docker/overlayer2找到实际的镜像层数据。
5. repositories.json 文件
这个需要先搞清楚 registry 是镜像仓库而 repository 代表镜像组比如不同版本的 nginx 镜像 该文件中描述了宿主机上所有镜像的repository元数据主要包括镜像名、tag和镜像ID 镜像ID是Docker采用SHA256算法 查看cat /var/lib/docker/image/overlay2/repositories.json | python -mjson.tool
{...,nginx: {nginx:latest: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85,nginxsha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85},...
}6. 拉取镜像
6.1 获取镜像清单
GET https://2h3po24q.mirror.aliyuncs.com/v2/library/alpine/manifests/latest HTTP/1.1
Host: 2h3po24q.mirror.aliyuncs.com
User-Agent: docker/19.03.12 go/go1.13.10 git-commit/48a66213fe kernel/5.8.0-1.el7.elrepo.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.12 \(linux\))
Accept: application/vnd.docker.distribution.manifest.v2json
Accept: application/vnd.docker.distribution.manifest.list.v2json
Accept: application/vnd.oci.image.index.v1json
Accept: application/vnd.oci.image.manifest.v1json
Accept: application/vnd.docker.distribution.manifest.v1prettyjws
Accept: application/json
Accept-Encoding: gzip
Connection: closeHTTP/1.1 200 OK
Content-Length: 1638
Content-Type: application/vnd.docker.distribution.manifest.list.v2json
Docker-Content-Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Docker-Distribution-Api-Version: registry/2.0
Etag: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Date: Thu, 20 Aug 2020 06:14:33 GMT
Connection: close{manifests:[{digest:sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:amd64,os:linux},size:528},{digest:sha256:71465c7d45a086a2181ce33bb47f7eaef5c233eace65704da0c5e5454a79cee5,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:arm,os:linux,variant:v6},size:528},{digest:sha256:c929c5ca1d3f793bfdd2c6d6d9210e2530f1184c0f488f514f1bb8080bb1e82b,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:arm,os:linux,variant:v7},size:528},{digest:sha256:3b3f647d2d99cac772ed64c4791e5d9b750dd5fe0b25db653ec4976f7b72837c,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:arm64,os:linux,variant:v8},size:528},{digest:sha256:90baa0922fe90624b05cb5766fa5da4e337921656c2f8e2b13bd3c052a0baac1,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:386,os:linux},size:528},{digest:sha256:5d950b30f229f0c53dd7dd7ed6e0e33e89d927b16b8149cc68f59bbe99219cc1,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:ppc64le,os:linux},size:528},{digest:sha256:a5426f084c755f4d6c1d1562a2d456aa574a24a61706f6806415627360c06ac0,mediaType:application\/vnd.docker.distribution.manifest.v2json,platform:{architecture:s390x,os:linux},size:528}],mediaType:application\/vnd.docker.distribution.manifest.list.v2json,schemaVersion:2}选择合适的镜像
GET https://2h3po24q.mirror.aliyuncs.com/v2/library/alpine/manifests/sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65 HTTP/1.1
Host: 2h3po24q.mirror.aliyuncs.com
User-Agent: docker/19.03.12 go/go1.13.10 git-commit/48a66213fe kernel/5.8.0-1.el7.elrepo.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.12 \(linux\))
Accept: application/vnd.docker.distribution.manifest.list.v2json
Accept: application/vnd.oci.image.index.v1json
Accept: application/vnd.oci.image.manifest.v1json
Accept: application/vnd.docker.distribution.manifest.v1prettyjws
Accept: application/json
Accept: application/vnd.docker.distribution.manifest.v2json
Accept-Encoding: gzip
Connection: closeHTTP/1.1 200 OK
Content-Length: 528
Content-Type: application/vnd.docker.distribution.manifest.v2json
Docker-Content-Digest: sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65
Docker-Distribution-Api-Version: registry/2.0
Etag: sha256:a15790640a6690aa1730c38cf0a440e2aa44aaca9b0e8931a9f2b0d7cc90fd65
Date: Thu, 20 Aug 2020 06:14:33 GMT
Connection: close{schemaVersion: 2,mediaType: application/vnd.docker.distribution.manifest.v2json,config: {mediaType: application/vnd.docker.container.image.v1json,size: 1509,digest: sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e},layers: [{mediaType: application/vnd.docker.image.rootfs.diff.tar.gzip,size: 2797541,digest: sha256:df20fa9351a15782c64e6dddb2d4a6f50bf6d3688060a34c4014b0d9a752eb4c}]
}按照digestlayerID下载镜像层信息
GET https://2h3po24q.mirror.aliyuncs.com/v2/library/alpine/blobs/sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e HTTP/1.1
Host: 2h3po24q.mirror.aliyuncs.com
User-Agent: docker/19.03.12 go/go1.13.10 git-commit/48a66213fe kernel/5.8.0-1.el7.elrepo.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.12 \(linux\))
Accept-Encoding: identity
Connection: closeHTTP/1.1 307 Temporary Redirect
Content-Type: application/octet-stream
Docker-Distribution-Api-Version: registry/2.0
Location: https://acs-cn-hangzhou-mirror.oss-cn-hangzhou.aliyuncs.com/docker/registry/v2/blobs/sha256/a2/a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e/data?Expires1597905273OSSAccessKeyIdLTAI4G6zf8H9RhDWxXfrrhkrSignature%2FNOGZkZMkQOgkhYcaRm%2B1e5JX7w%3D
Date: Thu, 20 Aug 2020 06:14:33 GMT
Content-Length: 0
Connection: close下载实际镜像数据
GET https://acs-cn-hangzhou-mirror.oss-cn-hangzhou.aliyuncs.com/docker/registry/v2/blobs/sha256/a2/a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e/data?Expires1597905273OSSAccessKeyIdLTAI4G6zf8H9RhDWxXfrrhkrSignature%2FNOGZkZMkQOgkhYcaRm%2B1e5JX7w%3D HTTP/1.1
Host: acs-cn-hangzhou-mirror.oss-cn-hangzhou.aliyuncs.com
User-Agent: docker/19.03.12 go/go1.13.10 git-commit/48a66213fe kernel/5.8.0-1.el7.elrepo.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.12 \(linux\))
Accept-Encoding: identity
Referer: https://2h3po24q.mirror.aliyuncs.com/v2/library/alpine/blobs/sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e
Connection: closeHTTP/1.1 200 OK
Server: AliyunOSS
Date: Thu, 20 Aug 2020 06:14:34 GMT
Content-Type: application/octet-stream
Content-Length: 1509
Connection: close
x-oss-request-id: 5F3E14CAC6CA7E31381A44B0
Accept-Ranges: bytes
ETag: B7B8406CA68CC818CB35F053F93CAF07
Last-Modified: Fri, 29 May 2020 21:41:36 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 6766004739995481995
x-oss-storage-class: Standard
Content-MD5: t7hAbKaMyBjLNfBTTyvBw
x-oss-server-time: 2
{architecture:amd64,config:{Hostname:,Domainname:,User:,AttachStdin:false,AttachStdout:false,AttachStderr
一大堆数据参考文献
https://blog.csdn.net/qq_24433609/article/details/120763486 https://lework.github.io/2020/08/17/docker-pull/