gpt4 book ai didi

linux - 拉取与 CPU 架构无关的 Docker 镜像

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:18 24 4
gpt4 key购买 nike

Docker hub 记录了它支持的 CPU 架构(amd64、arm32v5、arm32v6、arm32v7、arm64v8 等)。然而,我似乎需要指定特定于拱门的图像名称才能使用它们。

例如 busybox:latest 拉取 amd64 ( link ) 而不是我当前的架构。我使用的是 Raspberry PI (arm32v7),其镜像位于用户 arm32v7 ( link ) 下,因此镜像名称为 arm32v7/busybox:latest

这意味着如果我想在多个架构上运行容器,我需要为每个架构创建不同的配置(例如 docker-compose 或 k8s 部署文件)。我想要一个隐藏架构差异的配置,并希望 Docker 有一种方法可以根据 Docker 引擎的运行位置来提取架构特定的镜像。

这可能吗?

这是我的环境的一些输出。

docker 版本

Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:37:22 2019
OS/Arch: linux/arm
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:31:17 2019
OS/Arch: linux/arm
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683

docker 信息

Client:
Debug Mode: false

Server:
Containers: 41
Running: 20
Paused: 0
Stopped: 21
Images: 17
Server Version: 19.03.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.19.75-v7l+
Operating System: Raspbian GNU/Linux 10 (buster)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 3.814GiB
Name: raspberrypi
ID: EDO4:EH5V:KIKR:WJE7:VQX4:FXZA:VROQ:3EE3:FEOU:42Q5:TXKI:3HPX
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

uname -a

Linux raspberrypi 4.19.75-v7l+ #1270 SMP 9 月 24 日星期二 18:51:41 BST 2019 armv7l GNU/Linux

最佳答案

Docker 支持多架构(多平台)镜像。但它需要原生多架构镜像,这需要更复杂的 docker 构建过程。如果镜像支持多架构,那么Doc​​ker会根据本地架构拉取正确的架构。

通常,基础官方操作系统镜像已经实现了多架构支持 - https://www.docker.com/blog/docker-official-images-now-multi-platform/

但是,大多数 Docker 镜像仅支持单一架构。

实际上,busybox 是多架构镜像:

$ docker manifest inspect busybox | grep -E ".*(architecture|variant).*"
"architecture": "amd64",
"architecture": "arm",
"variant": "v5"
"architecture": "arm",
"variant": "v6"
"architecture": "arm",
"variant": "v7"
"architecture": "arm64",
"variant": "v8"
"architecture": "386",
"architecture": "ppc64le",
"architecture": "s390x",

但是您的架构(arm32v7 - 也许是 armv7)在那里不可用 - 它将拉取默认的 amd64 版本。因此,此图像需要进行一些小的改进才能支持您的架构。

关于linux - 拉取与 CPU 架构无关的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com