docker manifest 描述

管理 Docker 映像清单和清单列表

需要连接网络,从docker hub上拉取信息,关于manifest信息 打印出来。不连接网络会报错。

‎注意:此命令在 Docker 客户端上是实验性的。‎
‎它不应在生产环境中使用。‎

官方文档地址:https://docs.docker.com/engine/reference/commandline/manifest/

我的理解:

docker hub社区的镜像维护,让他人直观的了解你构建的镜像。

就是 docker image inspect <image ID> 查看镜像的信息,是否符合你的使用,里面的CPU架构版本,安装程序,依赖库,网络等信息。用来维护docker hub社区中的镜像信息,让别可以更加直观的了解内容。

使用

$ docker manifest COMMAND COMMAND

‎扩展描述‎

‎该命令本身不执行任何操作。为了对清单或清单列表进行操作,必须使用其中一个子命令。‎docker manifest

‎单个清单是有关图像的信息,例如图层、大小和摘要。docker 清单命令还为用户提供了其他信息,例如构建映像的 os 和体系结构。‎

‎清单列表是通过指定一个或多个(理想情况下是多个)图像名称创建的映像层的列表。然后,可以将其用作 与 中的映像名称 和 命令相同的方式。‎docker pull docker run

‎理想情况下,清单列表是从功能相同的图像创建的,用于不同的os/arch组合。因此,清单列表通常称为"多架构映像"。但是,用户可以创建一个指向两个映像的清单列表 - 一个用于 amd64 上的 Windows,另一个用于 amd64 上的 darwin。‎

$ docker manifestUsage:  docker manifest COMMANDThe **docker manifest** command has subcommands for managing image manifests and
manifest lists. A manifest list allows you to use one name to refer to the same image
built for multiple architectures.To see help for a subcommand, use:docker manifest CMD --helpFor full details on using docker manifest lists, see the registry v2 specification.EXPERIMENTAL:docker manifest is an experimental feature.Experimental features provide early access to product functionality. Thesefeatures may change between releases without warning, or can be removed from afuture release. Learn more about experimental features in our documentation:https://docs.docker.com/go/experimental/Commands:annotate    Add additional information to a local image manifestcreate      Create a local manifest list for annotating and pushing to a registryinspect     Display an image manifest, or manifest listpush        Push a manifest list to a repositoryrm          Delete one or more manifest lists from local storageRun 'docker manifest COMMAND --help' for more information on a command.

manifest inspect 清单检查

$ docker manifest inspect --helpUsage:  docker manifest inspect [OPTIONS] [MANIFEST_LIST] MANIFESTDisplay an image manifest, or manifest listOptions:--insecure   Allow communication with an insecure registry-v, --verbose    Output additional info including layers and platform

manifest create 清单创建

$ docker manifest create --helpUsage:  docker manifest create MANIFEST_LIST MANIFEST [MANIFEST...]Create a local manifest list for annotating and pushing to a registryOptions:-a, --amend      Amend an existing manifest list--insecure   Allow communication with an insecure registry

manifest annotate 清单注释

$ docker manifest annotate --helpUsage:  docker manifest annotate [OPTIONS] MANIFEST_LIST MANIFESTAdd additional information to a local image manifestOptions:--arch string           Set architecture--os string             Set operating system--os-features strings   Set operating system feature--os-version string     Set operating system version--variant string        Set architecture variant

manifest push 清单推送

$ docker manifest push --helpUsage:  docker manifest push [OPTIONS] MANIFEST_LISTPush a manifest list to a repositoryOptions:--insecure   Allow push to an insecure registry-p, --purge      Remove the local manifest list after push

使用不安全的注册表

manifest 命令仅与 Docker 注册表交互。因此,它无法向引擎查询允许的不安全注册表列表。为了允许 CLI 与不安全的注册表交互,一些docker manifest 命令有一个--insecure标志。对于查询注册表的每个事务,例如 create--insecure必须指定标志。此标志告诉 CLI,此注册表调用可能会忽略丢失或自签名证书等安全问题。同样,在manifest push不安全的注册表上,--insecure必须指定标志。如果这不与不安全的注册表一起使用,则清单命令将无法找到满足默认要求的注册表。

示例

查看镜像清单

查看docker hub 上 hello-world 镜像

$ docker manifest inspect hello-world
{"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json","manifests": [{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4","platform": {"architecture": "amd64","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:7b8b7289d0536a08eabdf71c20246e23f7116641db7e1d278592236ea4dcb30c","platform": {"architecture": "arm","os": "linux","variant": "v5"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:f130bd2d67e6e9280ac6d0a6c83857bfaf70234e8ef4236876eccfbd30973b1c","platform": {"architecture": "arm","os": "linux","variant": "v7"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:01433e86a06b752f228e3c17394169a5e21a0995f153268a9b36a16d4f2b2184","platform": {"architecture": "arm64","os": "linux","variant": "v8"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:251bb7a536c7cce3437758971aab3a31c6da52fb43ff0654cff5b167c4486409","platform": {"architecture": "386","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:c2f204d26b4ea353651385001bb6bc371d8c4edcd9daf61d00ad365d927e00c0","platform": {"architecture": "mips64le","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:b836bb24a270b9cc935962d8228517fde0f16990e88893d935efcb1b14c0017a","platform": {"architecture": "ppc64le","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:98c9722322be649df94780d3fbe594fce7996234b259f27eac9428b84050c849","platform": {"architecture": "riscv64","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 525,"digest": "sha256:c7b6944911848ce39b44ed660d95fb54d69bbd531de724c7ce6fc9f743c0b861","platform": {"architecture": "s390x","os": "linux"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 1125,"digest": "sha256:7e9c5b2a36bdd391c713b800eb7ac7047207f04faf92ec4aff8667c85540b41b","platform": {"architecture": "amd64","os": "windows","os.version": "10.0.20348.473"}},{"mediaType": "application/vnd.docker.distribution.manifest.v2+json","size": 1125,"digest": "sha256:b17da88a43678dd8de2c335b977330a5f4e3f1175251a4204f54ef2ed1360709","platform": {"architecture": "amd64","os": "windows","os.version": "10.0.17763.2458"}}]
}

查看镜像清单,获取os/arch信息

--verbose,该参数提供图像的名称(Ref)、体系结构和操作系统(平台)。

$ docker manifest inspect --verbose hello-world
[{"Ref": "docker.io/library/hello-world:latest@sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4","size": 525,"platform": {"architecture": "amd64","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1469,"digest": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 2479,"digest": "sha256:2db29710123e3e53a794f2694094b9b4338aa9ee5c40b930cb8063a1be392c54"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:7b8b7289d0536a08eabdf71c20246e23f7116641db7e1d278592236ea4dcb30c","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:7b8b7289d0536a08eabdf71c20246e23f7116641db7e1d278592236ea4dcb30c","size": 525,"platform": {"architecture": "arm","os": "linux","variant": "v5"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1482,"digest": "sha256:c0218de6585df06a66d67b25237bdda42137c727c367373a32639710c7a9fa94"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 3684,"digest": "sha256:b921b04d0447ddcd82a9220d887cd146f6ef39e20a938ee5e19a90fc3323e030"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:f130bd2d67e6e9280ac6d0a6c83857bfaf70234e8ef4236876eccfbd30973b1c","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:f130bd2d67e6e9280ac6d0a6c83857bfaf70234e8ef4236876eccfbd30973b1c","size": 525,"platform": {"architecture": "arm","os": "linux","variant": "v7"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1482,"digest": "sha256:1ec996c686eb87d8f091080ec29dd1862b39b5822ddfd8f9a1e2c9288fad89fe"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 2993,"digest": "sha256:9b157615502ddff86482f7fe2fa7a074db74a62fce12b4e8507827ac8f08d0ce"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:01433e86a06b752f228e3c17394169a5e21a0995f153268a9b36a16d4f2b2184","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:01433e86a06b752f228e3c17394169a5e21a0995f153268a9b36a16d4f2b2184","size": 525,"platform": {"architecture": "arm64","os": "linux","variant": "v8"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1483,"digest": "sha256:18e5af7904737ba5ef7fbbd7d59de5ebe6c4437907bd7fc436bf9b3ef3149ea9"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 3208,"digest": "sha256:93288797bd35d114f2d788e5abf4fae518a5bd299647daf4ede47acc029d66c5"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:251bb7a536c7cce3437758971aab3a31c6da52fb43ff0654cff5b167c4486409","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:251bb7a536c7cce3437758971aab3a31c6da52fb43ff0654cff5b167c4486409","size": 525,"platform": {"architecture": "386","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1467,"digest": "sha256:7c2f8335a1a3faa411d45fc31419e2fbb519dd9c41ece8ebc350e6fe7af6b017"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 2735,"digest": "sha256:cdfa10f2a818a2f4fcb49da487dc42795690a7fb04524bdc3decfa9fe16b2c2a"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:c2f204d26b4ea353651385001bb6bc371d8c4edcd9daf61d00ad365d927e00c0","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:c2f204d26b4ea353651385001bb6bc371d8c4edcd9daf61d00ad365d927e00c0","size": 525,"platform": {"architecture": "mips64le","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1472,"digest": "sha256:4d278d00d38a32c6096213745a79ff5c1f6ec12b575ed0f5e5a780a3478c1b21"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 4091,"digest": "sha256:3e4037a0f36c739a8a3f2184b76b57f6a1d56a36fe3c3f966657ad1db828e1aa"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:b836bb24a270b9cc935962d8228517fde0f16990e88893d935efcb1b14c0017a","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:b836bb24a270b9cc935962d8228517fde0f16990e88893d935efcb1b14c0017a","size": 525,"platform": {"architecture": "ppc64le","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1471,"digest": "sha256:61fff98d5ca765a4351964c8f4b5fb1a0d2c48458026f5452a389eb52d146fe8"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 3929,"digest": "sha256:33450689bfb495ed64ead935c9933f1d6b3e42fe369b8de9680cf4ff9d89ce5c"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:98c9722322be649df94780d3fbe594fce7996234b259f27eac9428b84050c849","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:98c9722322be649df94780d3fbe594fce7996234b259f27eac9428b84050c849","size": 525,"platform": {"architecture": "riscv64","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1471,"digest": "sha256:b3593dab05491cdf5ee88c29bee36603c0df0bc34798eed5067f6e1335a9d391"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 3000,"digest": "sha256:3caa6dc69d0b73f21d29bfa75356395f2695a7abad34f010656740e90ddce399"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:c7b6944911848ce39b44ed660d95fb54d69bbd531de724c7ce6fc9f743c0b861","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:c7b6944911848ce39b44ed660d95fb54d69bbd531de724c7ce6fc9f743c0b861","size": 525,"platform": {"architecture": "s390x","os": "linux"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1469,"digest": "sha256:df5477cea5582b0ae6a31de2d1c9bbacb506091f42a3b0fe77a209006f409fd8"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 3276,"digest": "sha256:abc70fcc95b2f52b325d69cc5c259dd9babb40a9df152e88b286fada1d3248bd"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:7e9c5b2a36bdd391c713b800eb7ac7047207f04faf92ec4aff8667c85540b41b","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:7e9c5b2a36bdd391c713b800eb7ac7047207f04faf92ec4aff8667c85540b41b","size": 1125,"platform": {"architecture": "amd64","os": "windows","os.version": "10.0.20348.473"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1686,"digest": "sha256:618fd25c1455708b34f08ed8354f2131f471ca8ad310b8a22b6a5ebfd2b64e23"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip","size": 117333150,"digest": "sha256:7691725ee3658d154f940d82fd8c3ff07c0dc589a0c9a93df47ed0ede92a76ab","urls": ["https://mcr.microsoft.com/v2/windows/nanoserver/blobs/sha256:7691725ee3658d154f940d82fd8c3ff07c0dc589a0c9a93df47ed0ede92a76ab"]},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 1871,"digest": "sha256:bfef10deb78a77121ec999eeec2bb3c2f65e023e0ea7b6e64deb72ebc25791c3"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 1162,"digest": "sha256:fdae4e65c07ded85b7bbfab7eccfc2043f5892407e48ded900879c6c9ebd24db"}]}},{"Ref": "docker.io/library/hello-world:latest@sha256:b17da88a43678dd8de2c335b977330a5f4e3f1175251a4204f54ef2ed1360709","Descriptor": {"mediaType": "application/vnd.docker.distribution.manifest.v2+json","digest": "sha256:b17da88a43678dd8de2c335b977330a5f4e3f1175251a4204f54ef2ed1360709","size": 1125,"platform": {"architecture": "amd64","os": "windows","os.version": "10.0.17763.2458"}},"SchemaV2Manifest": {"schemaVersion": 2,"mediaType": "application/vnd.docker.distribution.manifest.v2+json","config": {"mediaType": "application/vnd.docker.container.image.v1+json","size": 1683,"digest": "sha256:bbca594eee38d2bcbda18490d2667560b2452e74e73b8c26bddea59cb6920ad1"},"layers": [{"mediaType": "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip","size": 103046552,"digest": "sha256:b5c97e1d373f591225559869af7f4f01399c201f89d21f903b1d23c830aa0a3f","urls": ["https://mcr.microsoft.com/v2/windows/nanoserver/blobs/sha256:b5c97e1d373f591225559869af7f4f01399c201f89d21f903b1d23c830aa0a3f"]},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 1891,"digest": "sha256:149cdce3523df21ea29ed7f0fc0b1b9649bb7fc1e0ce8417bdaa204ce40cde33"},{"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip","size": 1172,"digest": "sha256:2ec547840b7459a5ed163f9bfd7cc09526cec5d72875737d576c0a6e489c295d"}]}}
]

创建并推送清单列表

要创建清单列表,首先create通过指定要包含在清单列表中的组成图像在本地创建清单列表。请记住,这是推送到注册表的,因此如果您想推送到 docker 注册表以外的注册表,则需要使用注册表名称或 IP 和端口创建清单列表。这类似于标记图像并将其推送到外部注册表。

创建清单列表的本地副本后,您可以选择 annotate它。允许的注释是架构和操作系统(覆盖图像的当前值)、操作系统特性和架构变体。

最后,您需要将push您的清单列表添加到所需的注册表中。下面是对这三个命令的描述,以及将它们组合在一起的示例。

$ docker manifest create 45.55.81.106:5000/coolapp:v1 \45.55.81.106:5000/coolapp-ppc64le-linux:v1 \45.55.81.106:5000/coolapp-arm-linux:v1 \45.55.81.106:5000/coolapp-amd64-linux:v1 \45.55.81.106:5000/coolapp-amd64-windows:v1Created manifest list 45.55. 81.106: 5000/ coolapp:v1
$ docker manifest annotate 45.55.81.106:5000/coolapp:v1 45.55.81.106:5000/coolapp-arm-linux --arch arm
$ docker manifest push 45.55.81.106:5000/coolapp:v1

检查清单

$ docker manifest inspect coolapp:v1

【Docker系列】docker manifest相关推荐

  1. Docker系列---docker cgroup资源管理 | TLS通讯加密 | 详细讲解

    Cgroup 前言 - Cgroup 一.对 CPU 的控制 1.使用 stress 工具测试 2.限制 CPU 使用周期速率 3.多任务比例分享 CPU 4.限制 CPU 内核使用 二.对内存使用的 ...

  2. 【IT之路】Docker系列-Docker容器下载、使用示例

    1.在指定容器执行操作(这里使用的是ubuntu 15.10版本容器,如果当前没有这个容器,会自动从网上下载) 指定容器执行echo命令,输出"Hello world" 各个参数解 ...

  3. Docker系列 七. Docker 安装Jenkins

    Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...

  4. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

  5. Docker系列5--一些问题及解决

    Docker系列5--一些问题及解决 参考文章: (1)Docker系列5--一些问题及解决 (2)https://www.cnblogs.com/drawnkid/p/8884240.html 备忘 ...

  6. Docker系列07—Dockerfile 详解

    Docker系列07-Dockerfile 详解 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作  dockerfile,docker build 基于容器制作镜像,已经在上篇Do ...

  7. 菜鸟系列docker——docker基本概念(1)

    docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...

  8. Docker系列06—基于容器制作镜像并上传到Docker Registry

    Docker系列06-基于容器制作镜像并上传到Docker Registry 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容 ...

  9. Docker系列之镜像瘦身(五)

    本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小. 缓存(cache) Docker的优势之一在于提供了缓存,加速镜像迭代构建,我们知道构建镜像使用docker ...

最新文章

  1. 如何防止SSH会话断开连接
  2. python3 pymysql 查询结果转字典dict
  3. js正则表达式语法大全_一条正则表达式闹的乌龙
  4. 标杆徐2018 Linux自动化运维实战,标杆徐2018 Linux自动化运维系列⑦: SaltStack自动化配置管理实战...
  5. flume消费kafka数据太慢_kafka补充01
  6. stm32内部低速rtc_STM32时钟RCC详解
  7. 有关Kill Session问题的讨论(旧文初发)
  8. 驱动lx4f120h,头文件配置,没有完全吃透,望指点
  9. 计算机硬盘坏道有什么特点,硬盘坏道对电脑会造成什么影响
  10. TI DSP实时操作系统
  11. Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is bein
  12. Java第三章(数组)
  13. python with打开多个文件_在python中使用with打开多个文件的方法
  14. 开源100天,OneFlow送上“百天大礼包”:深度学习框架如何进行性能优化?
  15. Numpy库的下载及安装(吐血总结)
  16. android平台下OpenGL ES 3.0绘制圆点、直线和三角形
  17. 森林防火监控系统解决方案及标准权威解读
  18. IntelliJ IDEA 如何关闭更新提示?
  19. P3761 [TJOI2017]城市
  20. 翻译:确认中的处理控制(CO1P)

热门文章

  1. 【双连通分量】 FZU 2181 快来买肉松饼
  2. 【年终盘点之二】2020 区块链创新项目里程碑事件
  3. 关于几本SEO相关书籍之我见
  4. 有关智能操作系统的讨论
  5. 携手抗击疫情,雀巢大家庭在行动
  6. 在家带娃有没有什么副业可以做?在家带娃的副业有哪些?
  7. vue生命周期和react生命周期对比。
  8. 太划算了! 1 元秒杀 1000 本爆款电子书!
  9. 嵌入式(网络编程)(网络基础)
  10. hdu 3949(线性基模版) 异或和中第k小的数