Архитектура системы в докерных контейнерах по отношению к компиляторам Голанга - PullRequest
1 голос
/ 03 мая 2019

По стечению обстоятельств сегодня я обнаружил, что два двоичных файла, скомпилированных на моем MacBook Pro 2017 с использованием кросс-компиляции с двумя различными архитектурами, работают в одном док-контейнере ubuntu:latest. Вот что произошло:

Сначала я скомпилировал hello-world под управлением env GOOS=linux GOARCH=amd64 go build, давайте назовем этот двоичный файл A. Затем я скомпилировал ту же самую программу hello-world с env GOOS=linux GOARCH=arm64 go build, давайте назовем этот двоичный файл B.

Я проверил md5sum для A и B и убедился, что это были разные двоичные файлы. Я скопировал оба этих двоичных файла в один и тот же док-контейнер с ubuntu:latest в качестве его базы, ожидая сбоя B при выполнении. Тем не менее, они оба были выполнены отлично.

Аналогично, двоичный файл, скомпилированный с использованием env GOOS=linux GOARCH=ppc64 go build, не будет выполняться внутри того же контейнера Docker. Кто-нибудь знает, почему это так?


Для справки, вывод uname -sm на моем MacBook дает Darwin x86_64. Вывод uname -sm внутри моего док-контейнера, работающего ubuntu:latest, дает Linux x86_64

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Похоже, что эта функциональность была добавлена ​​еще в 1.13, но еще многое предстоит сделать, чтобы сделать это незаметным для разработчиков, о которых Docker объявил на этой неделе.Из примечаний к выпуску Docker для Mac :

Поддержка архитектур arm, aarch64, ppc64le с использованием qemu

Что происходит в этом сценарии binfmt_misc с qemu используются для того, чтобы программы могли выполняться из других архитектур.Это требует изменений на хосте, поэтому вы часто получаете ошибки при запуске команд для других архитектур в Linux.

0 голосов
/ 03 мая 2019

Docker поддерживает только ppc64le.Больше информации здесь: https://docs.docker.com/docker-for-mac/multi-arch/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...