Docker Registry的manifest-tool

manifest-tool

manifest-tool is a command line utility that implements a portion of the client side of the Docker registry v2.2 API for interacting with manifest objects in a registry conforming to that specification.

This tool was mainly created for the purpose of viewing, creating, and pushing the new manifests list object type in the Docker registry. Manifest lists are defined in the v2.2 image specification and exist mainly for the purpose of supporting multi-architecture and/or multi-platform images within a Docker registry.

Note that manifest-tool was initially started as a joint project with Harshal Patil from IBM Bangalore, and originally forked from the registry client codebase, skopeo, by Antonio Murdaca/runc0m, that became a part of Project Atomic later in its lifetime. Thanks to both Antonio and Harshal for their initial work that made this possible! Also, note that work is ongoing to add these capabilities directly to the Docker client. Thanks to Christy Perez from IBM Systems for her hard work in pushing ahead with a docker/cli PR which should someday make this tool obsolete!

Sample Usage

The two main capabilities of this tool are to 1) inspect manifests (of all media types) within any registry supporting the Docker API and 2) to push manifest list objects to any registry which supports the Docker V2 API and the v2.2 image specification.

Note: For pushing to an authenticated registry like DockerHub, you will need a config generated via docker login:

docker login
<enter your credentials>

Important: Since 17.03, Docker for Mac stores credentials in the OSX/macOS keychain and not in config.json. This means for users of manifest-tool on Mac, you will need to specify --username and --password instead of relying on docker login credentials. Note that special characters may need escaping depending on your shell environment when provided via command line.

If you are pushing to a registry requiring authentication, credentials will be handled as follows:

  • If the --username and --password flags are supplied, their contents will be used as the basic credentials for any actions requiring authentication.
  • If --username and --password are not provided as command line flags, the default docker client config will be loaded (default location: $HOME/.docker/config.json) and credentials for the target registry will be queried if available.
  • If your docker config file is not in the standard location, you can provide an alternate directory location via the --docker-cfg flag and the config.json file will be used from that alternate directory.

The following example shows the use of --docker-cfg to provide an alternate directory location for docker login-generated credentials when pushing a manifest list:

$ ./manifest-tool --docker-cfg '/tmp/some-docker-config/' push from-spec /home/myuser/sample.yml
Inspect

You can inspect the manifest of any repo/image:tag combination by simply using the inspect command. Similar to the Docker client, if no tag is provided, latest is used as the tag. The output of an inspect on a manifest list media type is shown below. In the case of a manifest list the output shows all the platform-segregated details so the user can easily determine what platforms are supported by the image:

$ ./manifest-tool inspect trollin/golang:latest
Name:   trollin/golang (Type: application/vnd.docker.distribution.manifest.list.v2+json)
Digest: sha256:e001ca16da8f96ed191624c365de40d964092053a73ffa02667378ecc793dabb
 * Contains 5 manifest references:
1    Mfst Type: application/vnd.docker.distribution.manifest.v2+json
1       Digest: sha256:738ff08d42047a2167c8aed758140d01df835295fa6829f49a45f014045c86b0
1  Mfst Length: 1792
1     Platform:
1           -      OS: linux
1           - OS Vers: 
1           - OS Feat: []
1           -    Arch: amd64
1           - Variant: 
1           - Feature: 
1     # Layers: 7
         layer 1: digest = sha256:9f0706ba7422412cd468804fee456786f88bed94bf9aea6dde2a47f770d19d27
         layer 2: digest = sha256:d3942a742d221ef22a0a335c4eebf09e15a36dcfb224b5a2d0cdcc405f374ccb
         layer 3: digest = sha256:62b1123c88f67a9ad43d9bf3f552bbe3352696a674e82712fda785db4f71a655
         layer 4: digest = sha256:3306e13140efed403fce1789f2760e1356e5b4d76f84b0a92a0ab4b769d3a447
         layer 5: digest = sha256:72bc60ec9d39d021c5af5f1b950d4b5ea15495e36166b662f608bf7272a4ef3c
         layer 6: digest = sha256:2b74c5631cb8592d5eaebfc058c8c0a862d51eff640400452cd1be0089c0b53d
         layer 7: digest = sha256:c3c00cee508294b26a9046e2c43d845e3c4fa9101c449f3f67d696b8e1f0b05a

2    Mfst Type: application/vnd.docker.distribution.manifest.v2+json
2       Digest: sha256:dd7f68050650c90228ee27fb4e6a66a6e55172e6c7bb084c3b257507b1920d9b
2  Mfst Length: 1792
2     Platform:
2           -      OS: linux
2           - OS Vers: 
2           - OS Feat: []
2           -    Arch: arm
2           - Variant: v7
2           - Feature: 
2     # Layers: 7
         layer 1: digest = sha256:72c70f9f7d679945bc71d954dc0c7de236e0067af495d09e9bea24f497cc79b7
         layer 2: digest = sha256:468951d2a7c0c7ac263f85ec984303dc627e7d72cf255d3b496ef2e8820fed0c
         layer 3: digest = sha256:f3ba027ee390db991d1f3721300111af8180e195547e7812b36d992bf1223f8d
         layer 4: digest = sha256:527515a549a64f7c7e59149599a36547266916c3f01f2a520af61731bdc5d84f
         layer 5: digest = sha256:c2a8846df889425dbb7b7eec4aa23ba80b18cb827802fb2c3047f951af8e47eb
         layer 6: digest = sha256:836904189352dbaa66117d2dc671f0248d98af7e5e4fd6c501331e0aadca1fe5
         layer 7: digest = sha256:a420e8eb48d7eaf57cd199b887b205c4a7e772f337abfbb99fb109d800be9cdf

3    Mfst Type: application/vnd.docker.distribution.manifest.v2+json
3       Digest: sha256:7da99e1901b73425d45dc45779784cabd6c68c791cf99a4630177471e95a62ea
3  Mfst Length: 1792
3     Platform:
3           -      OS: linux
3           - OS Vers: 
3           - OS Feat: []
3           -    Arch: 386
3           - Variant: 
3           - Feature: 
3     # Layers: 7
         layer 1: digest = sha256:2fa359c89a0e952ec2fe14e3c584ee13d6ec919c73a7dcac34ba320a459e2a62
         layer 2: digest = sha256:54ddb5e3622b4571bbc0d44b29cebb14d29dbca08a475ff77342f35097464fe9
         layer 3: digest = sha256:c7e97c3de48d315e05dd5fad6a12bfeece80272f6b0c7107bb08d3de60f32f6c
         layer 4: digest = sha256:c19c57d924460ac3012f2e60e9327b31862f5b4410bce307fe18f258dee273c6
         layer 5: digest = sha256:9f2e09461ebc0017a8f53a2a4a770215d72c9c95f40bd84400b39ff321f2fa0d
         layer 6: digest = sha256:af0328d430b279d615d319ccba88420ac3fdff3c9d9ab9ae65ef383613181b12
         layer 7: digest = sha256:48a5a549190d0e2345a3ef52fb36992e4b3b86154648fed6a2455e394339682e

4    Mfst Type: application/vnd.docker.distribution.manifest.v2+json
4       Digest: sha256:71c489123d96fb379a92bb62a696e140eaa24bc44e241e5917dc01f66b22b8cf
4  Mfst Length: 1792
4     Platform:
4           -      OS: linux
4           - OS Vers: 
4           - OS Feat: []
4           -    Arch: ppc64le
4           - Variant: 
4           - Feature: 
4     # Layers: 7
         layer 1: digest = sha256:a5561821dba4ceb47be1d2f5f108a24b391df9d6a3a764d2c04ea8ac29410625
         layer 2: digest = sha256:88807427a2577c993b597a100e9caba7972e266a0a18cba8c2fe2d14f1367764
         layer 3: digest = sha256:82d997bbc6b0b5fec4c8b5fa96e4e89d98bb1ac41bfbecc0682a813fa137e4fb
         layer 4: digest = sha256:b6f51579554854f79e3b930af1eaace3c8a3e9da7df41a8b3bdc97e47697a0ef
         layer 5: digest = sha256:11446b02d18e4448e5359af390493245df61146672600d0be7cfd6e37310ba57
         layer 6: digest = sha256:dd61e5bdd4e1e530175062b0e32515b5c346f43ccf25c081987ae9b6b49c3a15
         layer 7: digest = sha256:7c613dd01f119499d8e7b4b1e4fdb6638f04cd20528e4b3a8e537d61c66cdc18

5    Mfst Type: application/vnd.docker.distribution.manifest.v2+json
5       Digest: sha256:0dc83ed60579807a0e6913e25f403755b733bf2b8415ae633c58b0eff7f53830
5  Mfst Length: 1792
5     Platform:
5           -      OS: linux
5           - OS Vers: 
5           - OS Feat: []
5           -    Arch: s390x
5           - Variant: 
5           - Feature: 
5     # Layers: 7
         layer 1: digest = sha256:29420dd727d39cbedfb85562111f49e24b0b96adda04de4663d2099fbbf4f993
         layer 2: digest = sha256:8df37c45a9ab1f6a86d72a13aaa358015be4fd124c6a11083f75e5371273d5dc
         layer 3: digest = sha256:1533d3ea9025b772c86273232b4ee6a0dd2cb6852dbf3107db1e1aab22b744fd
         layer 4: digest = sha256:7e616db8da0d96fc673928cf73007a7456efcba84a6df127e476a102dfea6f7e
         layer 5: digest = sha256:70c28aac7effb022114051bd9d3df946242c838544b5d2b9c0cc128ff26cffdc
         layer 6: digest = sha256:e6b51fe20471b4195349bec4a2ea07d8b4f2e69cac056f1f41c047d264b23f58
         layer 7: digest = sha256:b3c7c7b9de1680f7f0400d9757a5d8cb5963dbd28d9111ac72da620501bf2f34

From this output we can clearly see this is a manifest list object (the media type is output as well) that has five platform definitions to support amd64, i386, s390x (z Systems), and ARMv7. To read more about manifest lists and how the Docker engine uses this information to determine what image/layers to pull read this blog post on multi-platform support in Docker.

Create/Push

Given that the Docker client does not have a way to perform the creation/pushing of manifest list objects (although see the note above regarding the in-process PR to correct this), the main role of manifest-tool is to create manifest list entries and push them to a Docker registry v2.2 API-supporting repository. The classic method to define the manifest list particulars is via a YAML file.

A sample YAML file is shown below. The cross-repository push feature is exploited in manifest-tool so that the source and target image names can differ as long as they are within the same registry. For example, a source image could be named myprivreg:5000/someimage_ppc64le:latest and referenced by a manifest list in repository myprivreg:5000/someimage:latest.

With a private registry running on port 5000, a sample YAML input to create a manifest list combining a ppc64le and amd64 image would look like this:

image: myprivreg:5000/someimage:latest
manifests:
  -
    image: myprivreg:5000/someimage:ppc64le
    platform:
      architecture: ppc64le
      os: linux
  -
    image: myprivreg:5000/someimage:amd64
    platform:
      architecture: amd64
      features:
        - sse
      os: linux

With the above YAML definition, creating the manifest list with the tool would use the following command:

$ ./manifest-tool push from-spec someimage.yaml

In addition to the YAML file format, manifest-tool has the option to use command line arguments to provide the specified images/tags and platform OS/architecture details. Instead of from-spec you can use from-args with the following format:

$ ./manifest-tool push from-args \
    --platforms linux/amd64,linux/arm,linux/arm64 \
    --template foo/bar-ARCH:v1 \
    --target foo/bar:v1

On the command line you specify the platform os/arch pairs, a template for finding the source images for each input platform pair, and a target image name.

Specifically:

  • --platforms specifies which platforms you want to push for in the form OS/ARCH,OS/ARCH,...
  • --template specifies the image repo:tag source for inputs by replacing the placeholders OS and ARCH with the inputs from --platforms.
  • --target specifies the target image repo:tag that will be the manifest list entry in the registry.
Functional Changelog for Push/Create
  • Release v0.5.0:
  1. You can now specify --ignore-missing and if any of the input images are not available, the tool will output a warning but will not terminate. This allows for "best case" creation of manifest lists based on available images at the time.
  2. Using the YAML input option, you can leave the platform specification empty and manifest-tool will auto-populate the platform definition by using the source image manifest OS/arch details. Note that this is potentially deficient for cases where the image was built in a cross-compiled fashion and the source image data is incorrect as it does not match the binary OS/arch content in the image layers.
  • Release v0.6.0:
  1. You can specify tags: as a list of additional tags to push to the registry against the target manifest list name being created (#32):
image: myprivreg:5000/someimage:1.0.0
tags: ['1.0', '1', 'latest']
manifests:
  ...
  • Release v0.7.0:
  1. The output of manifest-tool was modified to add the size of the manifest list canonical JSON pushed to the registry. This allows manifest list content to be signed using 3rd party tools like notary which needs the size of the object to validate and sign the content. This is used by the LinuxKit project to create signed manifest lists of all of their container images. Example output at the end of a successful manifest list create is shown below. Note that the size field is appended to the digest hash in this version:
Digest: sha256:f316f43aceb7a920a7b6c0278c76694a84f608b72bd955db7c9e24927e7edcb3 2058

Building

The releases of manifest-tool are built using the latest Go version; currently 1.9.1.

To build manifest-tool, clone this repository into your $GOPATH:

$ cd $GOPATH/src
$ mkdir -p github.com/estesp
$ cd github.com/estesp
$ git clone https://github.com/estesp/manifest-tool
$ cd manifest-tool && make binary

If you do not have a local Golang environment, you can use the make build target to build manifest-tool in a Golang 1.9.1-based container environment. This will require that you have Docker installed. The make static target will build a statically-linked binary, and make cross is used to build all supported CPU architectures, creating static binaries for each platform.

Note that signed binary releases are available on the project's GitHub releases page for several CPU architectures for Linux as well as OSX/macOS.

Using manifest-tool Without Installation

Interested in using manifest-tool for simple query operations? For example, maybe you only want to query if a specific image:tag combination is a manifest list entry or not, and if so, what platforms are listed in the manifest.

You can consume this feature of manifest-tool without installing the binary as long as you are querying public (e.g. not private/authentication-requiring registries) images via another project, mquery.

You can use mquery via a multi-platform image currently located on DockerHub as mplatform/mquery:latest. For example, you can query the mquery image itself with the following command

$ docker run --rm mplatform/mquery mplatform/mquery
Image: mplatform/mquery
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/undefined
   - linux/arm64/undefined
   - linux/ppc64le
   - linux/s390x
   - windows/amd64:10.0.14393.1593

Note that the undefined reference in the output is due to the fact that the variant field isn't being filled out in the manifest list platform object for this image.

The mquery program itself is a small Go program that queries functions running via OpenWhisk in IBM Cloud Functions public serverless offering. One of those functions is packaged as a Docker container image with manifest-tool installed. More information is available in the mquery GitHub repo. You can read more of the background details in my blog post about the Moby Summit EU talk on this topic.

Test a Registry for "Manifest List" Support

If you operate or use a registry claiming conformance to the Docker distribution v2 API and v2.2 image specification you may want to confirm that this image registry supports the manifest list media type and the APIs used to create a manifest list.

This GitHub repo now has a pre-configured test script which will use readily available multi-architecture content from DockerHub and tag, push, and then combine it into a manifest list against any image registry you point it to. See the test-registry.sh script in this repo's integration directory for further details. A simple use of the script is shown below to test a private registry:

$ ./test-registry.sh r.myprivreg.com/somerepo

Note: This script will expect login details have already been provided to docker login and will use those stored credentials for push and API access to somerepo on r.myprivreg.com.

License

manifest-tool is licensed under the Apache Software License (ASL) 2.0

转载于:https://my.oschina.net/u/2306127/blog/1593673

MCP协议驱动的AI代理协同操作系统:基于Docker的轻量级Agent治理框架 AI代理(AI Agents)作为大模型落地的核心运行单元,其规模化部署面临环境隔离、资源管控、服务发现与安全审计等工程挑战。MCP(Model Control Protocol)协议定义了代理间标准化交互契约,涵盖能力声明、输入/输出Schema、健康探针与执行约束等元数据规范;而Docker容器凭借不可变镜像、进程隔离、GPU/内存精细控制及沙箱网络策略,成为承载MCP协议的理想运行时底座。该组合技术方案显著提升多Agent系统的可验证性、可复用性与合规性,广泛适用于金融单据处理、政务智能审批、供应链协 阅读详情

相关推荐

Docker驱动的AI代理控制平面(MCP):轻量级Agent模块化部署方案

AI代理(Agent)工程化面临的核心挑战在于能力封装、安全调用与跨系统协同——传统函数式Tool抽象难以满足生产环境对版本管理、权限控制和可观测性的要求。MCP(Model Control Plane)提出以Docker镜像为原子单元的运行时契约模型,将Agent工具升维为可签名、可发现、可鉴权的独立服务实体;其本质是复用容器技术的隔离性、可移植性与标准化元数据能力,在LLM网关与业务系统间构建可控中间层。该范式显著降低中小规模AI项目的运维复杂度,天然兼容LangChain等编排框架,并支撑灰度发布、审

weixin_33812433的博客 488

manifest-tool, 清单列表对象创建/查询的清单工具.zip

manifest-tool, 清单列表对象创建/查询的清单工具 清单工具manifest-tool 是一个 命令行 实用工具,它实现 Docker 注册表 v2.2 API的一部分,用于与注册表中的清单对象相互作用。这个工具主要是为了查看。创建和推动新的英镑清单清单对象类型在 Docker 注册表

Docker Engine实操入门:从docker: command not found到可调试容器

容器技术本质是操作系统级虚拟化,依托Linux namespaces与cgroups实现进程隔离;Docker Engine作为最主流的容器运行时,封装了runc等底层能力,提供统一CLI接口与镜像管理机制;其技术价值在于降低容器化门槛、保障环境一致性,并支撑CI/CD与微服务架构落地;典型应用场景包括本地开发调试、PHP/Java应用容器化、Docker Compose多服务编排及向Kubernetes平滑演进;本文聚焦Docker Engine安装配置、daemon.json深度调优、镜像加速、权限与网

weixin_34008933的博客 369

manifest-tool:清单清单对象创建清单工具

清单工具 manifest-tool是一个命令行实用程序,用于实现Docker注册表v2.2 API的客户端的一部分,用于与符合该规范的注册表中的清单对象进行交互。 创建此工具主要是为了查看,创建和推送Docker注册表中的新清单清单对象类型。 清单列表是在中定义的,并且主要是为了在Docker注册表中支持多架构和/或多平台映像而存在。 请注意,manifest-tool最初是与IBM Bangalore的作为一个联合项目启动的,最初是由从注册表客户端代码库skopeo派生的,后来成为了的一部分。 感谢Antonio和Harshal所做的最初工作,使之成为可能! 另外,请注意,将这些功能直

manifest-tool 教程与指南

**manifest-tool** 是由 [estesp](https://github.com/estesp) 创建的一个命令行工具,用于处理Docker v2版本2的“manifest列表”(现在称为OCIv1图像规范中的“索引”)。这个工具的主要目的是组合各种架构和平台特定的容器镜像清单,形成一个单一的参考点。这样,容器运行时可以根据本地节点的架构和平台选择适当的索引条目,而不需要单独的指令

gitblog_00981的博客 623

构建多种系统架构支持的 Docker 镜像 -- docker manifest 命令详解

https://yeasy.gitbooks.io/docker_practice/image/manifest.html

liuhehe的博客 1640

kaniko高级用法:多架构镜像构建与manifest合并完全指南

在当今多元化的计算环境中,多架构容器镜像已成为现代云原生应用的必备功能。kaniko作为一款在Kubernetes中构建容器镜像的强大工具,虽然本身不直接支持多架构manifest创建,但通过与manifest-tool等工具的结合,可以轻松实现跨平台镜像构建。本指南将为您详细介绍如何使用kaniko构建多架构容器镜像并合并manifest,让您的应用能够在x86、ARM等多种架构上无缝运行。

gitblog_01175的博客 709

阿里云轻量服务器从零搭建Docker私有仓库及Java项目部署全流程指南

*

weixin_47171794的博客 367

DOCR垃圾回收原理与安全清理实战指南

容器镜像仓库的垃圾回收(Garbage Collection)本质是基于内容寻址存储(CAS)的不可达对象识别机制,其核心依赖Docker Registry v2协议定义的manifest、config、layer三层原子结构及严格的引用可达性分析。不同于文件系统删除,GC通过反向追踪所有存活tag所关联的manifest链路,标记被直接或间接引用的数据块,仅清理真正‘不可达’的layer blob。该机制保障了K8s按digest拉取等生产场景的稳定性,但也带来误删风险与存储延迟释放等工程挑战。本文结合D

congju3179的博客 465

manifest manifest

41.0.2272.89.manifest

软件分发体系实战:从APT、PyPI到Docker与HF Hub的工程化落地

软件分发(Software Distribution)是保障代码在异构环境可靠运行的核心工程能力,其本质是通过确定性构建、声明式描述与密码学验证,解决‘本地能跑、线上崩’这一经典问题。它涵盖操作系统包管理(如APT)、语言级依赖分发(如PyPI/PDM)、容器镜像(Docker Registry/BuildKit)及AI模型分发(Hugging Face Hub)四大范式,每类均需应对版本漂移、架构适配、安全审计与灰度验证等共性挑战。本文基于37个金融、IoT与AI量产项目经验,拆解跨平台构建、锁定依赖、多

weixin_34396902的博客 425

DeepSeek V1-V4技术演进与部署故障根因分析

大语言模型从单体推理走向自主Agent系统,本质是架构范式的三次跃迁:动态KV缓存管理、OpenAI兼容的工具调用协议、状态化会话与硬件协同优化。理解这些底层原理,才能精准定位如'502 Bad Gateway''model name not supported''stream disconnected'等高频报错——它们并非配置失误,而是V2的paged attention、V4的tool_schema字段或V4 Pro的A100专属CUDA kernel与运行环境不匹配所致。本文聚焦DeepSeek全系

cnmik42448的专栏 866

NAS上部署Hermes Agent与WebUI的Docker实战指南

Hermes Agent是一种面向本地化运行的AI智能体调度框架,其核心价值在于将提示工程、工具调用、记忆管理与状态追踪封装为可编排、可观察的轻量级运行时。依托Docker容器化技术,它能有效隔离Python依赖冲突、规避NAS系统环境限制,并实现跨平台一致部署;结合WebUI,提供可视化调试、执行轨迹追踪与实时响应监控能力。该方案特别适用于家庭私有化AI场景,如日程管理、本地视频分析、语音助手等低延迟非实时任务,在资源受限的ARM架构NAS(如群晖DS923+)上已验证稳定运行。本文聚焦Docker+do

weixin_34242819的博客 602

UnityNuGet完全指南:如何通过Unity包管理器无缝集成NuGet包

UnityNuGet是一个强大的工具,它允许开发者通过Unity包管理器无缝集成NuGet包到Unity项目中。本文将为你提供一个简单快速的完整指南,帮助你轻松掌握UnityNuGet的使用方法,让你的Unity开发更加高效便捷。 ## 📦 UnityNuGet简介:为什么它是Unity开发者的必备工具 UnityNuGet项目提供了一个精选的NuGet包列表,这些包经过筛选和适配,能够完美

gitblog_01049的博客 977

深度解析Docker镜像:从拉取、提取到安全审计的实战指南

容器技术通过将应用及其依赖打包成标准化的镜像,实现了环境一致性与快速部署。其核心原理基于分层存储与联合文件系统,这使得镜像具备高效分发和版本管理的能力。在云原生与DevOps实践中,深入理解镜像的构成对于优化构建流程、保障供应链安全至关重要。通过直接与Registry API交互、分析镜像层内容,工程师可以进行高效的依赖梳理、漏洞扫描和镜像优化。本文聚焦于Docker镜像的合规深度解析,结合skopeo、dive等工具链,详细演示了从底层拉取、可视化层分析到安全审计的完整路径,旨在提升开发运维中的镜像管控与

weixin_34290096的博客 281

MCP Server:AI工具链标准化部署与工程化实践

AI工具链(AI Toolchains)是指将多个异构能力模块(如API、脚本、微服务)协同编排以支撑LLM Agent或RAG系统的工程体系。其核心挑战在于缺乏统一契约、上下文割裂、可观测性缺失与治理能力真空——这导致本地验证通过的AI函数在生产环境频繁报错、参数错乱或熔断。MCP Server作为轻量级标准化中间层,基于REST+OpenAPI+OpenTelemetry构建,提供强制Schema校验、自动上下文注入、全链路追踪与策略化治理能力,显著提升AI服务端到端部署(End-to-End Depl

weixin_33906657的博客 381

龙芯3B6000平台Docker部署Jenkins实战:国产架构CI/CD解决方案

这次我们来看一个在国产龙芯 3B6000 平台上,使用 Docker 部署 Jenkins 的实战方案。对于使用龙芯架构的开发者或运维人员来说,如何在非 x86 的生态中搭建一套稳定、高效的 CI/CD 流水线,是一个很实际的需求。本文将直接切入主题,带你完成从 Docker 安装、Jenkins 容器化部署到基础功能验证的全过程。 龙芯 3B6000 采用 LoongArch 指令集,其软件生态正在快速完善。通过 Docker 部署 Jenkins,可以充分利用容器化的隔离性和可移植性,简化环境配置,实现

weixin_34130389的博客 410

龙芯3B6000平台安装Docker 29.5.1:LoongArch架构容器化实践指南

在龙芯 3B6000 平台上安装 Docker 29.5.1 版本,这不仅是国产 CPU 生态的一次重要实践,更是对 LoongArch 架构下容器化技术栈完整性的关键验证。龙芯 3B6000 作为国产自主 CPU 的代表,其软件生态的完善程度直接关系到实际应用部署的可行性。Docker 作为现代应用开发和部署的事实标准,能否在其上稳定运行高版本,是很多开发者和运维团队关心的核心问题。 这次我们直接切入主题:在龙芯 3B6000 上,通过 RPM 包的方式,安装 Docker Engine 29.5.1 版

weixin_30823001的博客 436
上一篇: iOS 获取系统截屏事件
下一篇: Asp.net MVC 生成zip并下载
weixin_33716941
博客等级 码龄11年 5407粉丝 1392原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值