Как собрать docker контейнер из 32-битного Linux дистрибутива, чтобы `arch` выводил" i686 " - PullRequest
0 голосов
/ 24 февраля 2020

Я следовал инструкциям создать базовый образ в Docker документах и ​​создал 32-битное изображение RHEL 6, используя их скрипт mkimage-yum. sh. Скрипт почти работал из коробки, мне просто пришлось изменить строку 146, чтобы сохранить файл tar в файловой системе, вместо того, чтобы передать его в docker.

Проблема в том, что когда я запускаю созданный образ, Команда arch печатает x86_64, а команда uname также сообщает о 64-битной системе.

[root@1bbebc25abe2 /]# arch
x86_64
[root@1bbebc25abe2 /]# uname -a
Linux 1bbebc25abe2 4.19.93 #1-NixOS SMP Sat Jan 4 18:13:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@1bbebc25abe2 /]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.10 (Santiago)
[root@1bbebc25abe2 /]# cat /etc/system-release-cpe
cpe:/o:redhat:enterprise_linux:6server:ga:server
[root@1bbebc25abe2 /]# cat /etc/system-release
Red Hat Enterprise Linux Server release 6.10 (Santiago)

У меня есть сценарии оболочки, которые должны иметь возможность отличить 32-битную систему от 64-битной системы. Можно ли как-нибудь "исправить" команду arch? Или есть какой-то другой способ, которым я должен был бы выполнять обнаружение системной дуги?

ARCH=$(arch)
if [[ ${ARCH} == 'x86_64' ]]; then
  ...
elif [[ ${ARCH} == 'i686' ]]; then
  ...
else
  echo "Unexpected arch ${ARCH}"
  exit 1
fi

В настоящее время я думаю сделать следующее, но это не переносимо (требуется rpm)

[root@1bbebc25abe2 /]# rpm --eval '%{_arch}'
i386
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...