Назад | Перейти на главную страницу

Мультиархитектура Docker на arm64

у меня есть 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. Как я могу это сделать?