【发布时间】:2019-12-11 23:53:56
【问题描述】:
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 version
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 info
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 Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
【问题讨论】:
-
这两个完全不相关(在 docker 意义上),不同的容器。不清楚你问什么。如果您询问如何“根据 Docker 引擎的位置提取特定于拱门的图像”,则由您编写脚本,而不是在 docker 端。 Docker看不到架构,对于docker来说这些只是文件。
arm32v7/busybox镜像是arm32v7制作的,和官方的busybox不一样。 -
@KamilCuk。也许 Busybox 是一个不好的例子。除了我需要这个容器作为依赖项并且遇到了拱形差异问题外,我不太了解它的作用。说 Postgres 容器。无论 Postgres 是安装在 x86 还是基于 ARM 的机器上,Postgres 的功能在各种架构中都应该几乎相同。是的,我可以编写一个脚本来提取正确的图像,但奇怪的是,这是由用户而不是 Docker 引擎处理的。指定 arch 似乎取决于实现而不是接口。
标签: linux docker docker-compose arm