Когда вы создаете образ локально, он будет по умолчанию построен для той же архитектуры, что и ваш локальный хост. Поскольку в наши дни большинство систем x86 являются 64-разрядными (до того момента, когда во многих дистрибутивах пропала поддержка 32-разрядной архитектуры x86), это означает, что подавляющее большинство изображений, которые вы обнаружите, будут работать только в системах x86_64.
Чаще встречается поддержка multiarch в «официальных» изображениях:
Большинство официальных изображений в Docker Hub предоставляют различные архитектуры. Например, изображение busybox поддерживает amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386, ppc64le и s390x. При запуске этого образа на компьютере x86_64 / amd64 вариант x86_64 будет извлечен и запущен.
(эта цитата взята из следующей ссылки)
Пока есть поддержка построения мультиархитектурных образов , которая требует явной настройки лицом, создающим образ.
Я не верю, что Docker предоставляет какие-либо инструменты для удобного изучения поддерживаемой архитектуры для данного изображения. Вы можете использовать инструмент skopeo , чтобы сделать это, хотя процесс все еще немного неочевиден. Чтобы увидеть список архитектур для мультиархитектурного изображения, нам нужно использовать параметр --raw
:
$ skopeo inspect --raw docker://busybox | python -mjson.tool | grep -i architecture
"architecture": "amd64",
"architecture": "arm",
"architecture": "arm",
"architecture": "arm",
"architecture": "arm64",
"architecture": "386",
"architecture": "mips64le",
"architecture": "ppc64le",
"architecture": "s390x",
Для изображений с одной архитектурой вышеприведенное не даст результатов; в этом случае, опустите --raw
, чтобы увидеть архитектуру:
$ skopeo inspect docker://dpage/pgadmin4 | python -mjson.tool | grep -i architecture
"Architecture": "amd64",