По стечению обстоятельств сегодня я обнаружил, что два двоичных файла, скомпилированных на моем 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