у меня есть arm64
плата с Docker 18.09.7:
root@node01:~# uname -a
Linux node01.example.com 4.4.167-1213-rockchip-ayufan-g34ae07687fce #1 SMP Tue Jun 18 20:44:49 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
root@node01:~# docker version | grep Arch | head -1
OS/Arch: linux/arm
Я могу запустить контейнер, который явно arm64
, но я не могу запустить контейнер с несколькими архитектурами, который включает arm64
служба поддержки. Я смотрю на бязь / узел который перечисляет release-v3.9
и release-v3.9-arm64
; первый - многоархитектурный контейнер с arm64
поддержка, а последняя только arm64
. Вот что происходит, когда я пытаюсь их запустить:
root@node01:~# docker run --privileged --entrypoint=uname calico/node:release-v3.9-arm64 -a
Linux ea1b882963b3 4.4.167-1213-rockchip-ayufan-g34ae07687fce #1 SMP Tue Jun 18 20:44:49 UTC 2019 aarch64 Linux
root@node01:~# docker run --privileged --entrypoint=uname calico/node:release-v3.9 -a
Unable to find image 'calico/node:release-v3.9' locally
release-v3.9: Pulling from calico/node
docker: no matching manifest for linux/arm/v8 in the manifest list entries.
See 'docker run --help'.
Мое чтение говорит, что arm64
и aarch64
означают то же самое; один относится к архитектуре ядра, а другой - к пользовательскому пространству. Далее вроде бы arm/v8
это конкретная архитектура, которая может запускать arm64
набор инструкций. Итак, похоже, что Docker просит arm/v8
когда он должен просить arm64
; или он должен запрашивать оба в порядке предпочтения.
Итак: чтобы Kubernetes работал бесперебойно, мне нужно заставить Docker запускать многоархитектурные контейнеры Docker, например calico/node
. Как я могу это сделать?