Wenn ich ein 32-Bit-CentOS-5-Docker-Image erstelle, möchte ich, dass die CPU-Architektur dort als i386 / i686 gemeldet wird (Installer, der in dieser Container-Prüfarchitektur getestet hat und 64-Bit-Binärdateien statt 32 Bit installiert). Ich setze yum-Variablen und habe uname-Wrapper erstellt, so dass yum und checks in bash-Skripten funktionieren:
%Vor%Aber python meldet immer noch 64 bit
%Vor%Gibt es eine Möglichkeit, die CPU-Architektur überall zu fälschen?
Ich hoffe, es gibt einen eleganteren Weg, dies zu tun, aber hier ist, was ich tue: Vorstellen Sie jeden Befehl, den Sie mit linux32
ausführen möchten. Zum Beispiel:
Alternativ können Sie linux32
im Aufruf von docker run
verwenden:
Oder noch besser, verwenden Sie ein Docker-Image (oder erstellen Sie ein eigenes), das linux32
als ENTRYPOINT
konfiguriert, wie zum Beispiel:
Evans Antwort funktioniert, aber Sie müssen immer noch fast jede RUN
-Zeile in Ihrem Dockerfile
mit linux32
voranstellen. Um dies zu vermeiden, habe ich am oberen Rand von Dockerfile
folgendes hinzugefügt:
/bin/sh
ist normalerweise eine symbolische Verbindung zu /bin/bash
. Dies ersetzt die symbolische Verknüpfung durch das folgende Skript:
Damit wird jeder Aufruf von RUN
in Ihrem Dockerfile
unter linux32
ausgeführt. Es sei denn, Sie verwenden das Format RUN ["command"...]
, das den Aufruf von /bin/sh
umgeht. In diesem Fall müssen Sie das Präfix linux32
manuell hinzufügen.
Für CentOS müssen Sie nur die folgenden Dateien ändern:
%Vor%(genau wie ich es in der Pull-Anfrage an toopher / centos-i386: centos6 gemacht habe)
%Vor%