Blog

Erstellen von Intel Docker-Containern auf dem Mac M1

Dennis Vink

Aktualisiert Oktober 16, 2025
4 Minuten

Lima ist ein Tool, das oft als Containerd für Mac bezeichnet wird. Mit ihm können Sieein Linux-Betriebssystem neben Ihrem Mac ausführen. Es bietet automatische Portweiterleitung,nahtlose Dateifreigabe und unterstützt verschiedene Linux-Distributionen wie AlmaLinux,Alphine, Arch Linux, Debian, Fedora, SUSE, Oracle Linux, Rocky und Ubuntu. Standardmäßig wird es mit containerd und nerdctl ausgeliefert, aber Sie können Lima auch für andere Aufgaben als Container verwenden .

Mac Computer mit Apple Sillicon

Ende 2020 brachte Mac seine ersten Systeme mit Apple Silicon auf den Markt, einem speziell für Mac entwickelten Arm-basierten Chip. Die neuesten Ausgaben des Macbook pro verwenden den M1 Apple Silicon Prozessor, während es sich früher um einen Intel Prozessor handelte. Ihr neuerkundenspezifischer Chipsatz ist nicht in der Lage, Intel-Befehle ohne die Hilfe von zusätzlicherSoftware zu verarbeiten. Anwendungen, die für den Intel-Prozessor entwickelt wurden, können mit Hilfe der von Apple zur Verfügung gestellten Emulationssoftware auf einem Mac trotzdem verwendet werden: "Rosetta 2".

Die Rosetta 2 Software hat jedoch einige Einschränkungen, was die Verarbeitung angeht. Insbesondere ist sie oft nicht kompatibel mit Anwendungen für virtuelle Maschinen, was uns zum nächsten Thema bringt: Docker.

Herausforderungen mit Docker bei Verwendung des neuen M1-Prozessors

Ein beträchtlicher Teil der Entwickler verwendet Docker für ihre lokale Entwicklungsarbeit. Standardmäßig unterstützt Docker die Emulation von amd64 durch die Angabe des --platform linux/amd64 Flagge für die Erstellung und Ausführung von Containern. Die meisten Images und Pakete sind für amd64 verfügbar,, aber nicht jedes Paket wurde umgestellt. Ich hatte kürzlich einen Anwendungsfall, bei dem ich unbedingteine Intel-Architektur für einen Container benötigte. Die Optionen, die ich hatte, waren entweder das Image auf meinem alten Macbook zu erstellen oder eine virtuelle Maschine mit der richtigen Architektur aufzusetzen.

Lima für die Erstellung von Docker-Images einrichten

Und hier kommt Lima ins Spiel. Mein Ziel war es, eine Umgebung einzurichten, in der ich DockerContainer wie gewohnt erstellen kann, ohne Dateien auf ein anderes System übertragen oderauf mein altes Macbook zurückgreifen zu müssen. Lima ist das perfekte Werkzeug für diese Aufgabe.

Sie können lima auf MacOS mit brew installieren: brew install lima. Sobald es installiert ist: limactl start und wählen Sie:

Open an editor to review or modify the current configuration

In der Zeile, in der arch: null steht, ersetzen Sie null durch x86_64. Standardmäßig verwendet die Architektur Ihres Betriebssystems (im Falle eines M1 ist es aarch64). Nachdem Sie die Konfigurationsdatei gespeichert haben, geben Sie die folgenden Befehle ein:

limactl shell default
sudo systemctl start containerd
sudo nerdctl run --privileged --rm tonistiigi/binfmt --install all
exit

Dies ist erforderlich, damit das Gastbetriebssystem nicht-native Binärdateien ausführen kann. Und das war's mit der Installation! Lima wird mit containerd und nerdctl zum Erstellen von Docker-Images geliefert.

Erstellen eines Alias, um die Erstellung von Docker-Images mit Lima zu vereinfachen

Die Methode zur Erstellung von Docker-Containern sieht normalerweise folgendermaßen aus: lima nerdctl build ., wobei lima nerdctl ein Ersatz für den Befehl docker ist. Um meine derzeitige Arbeitsweise beizubehalten, habe ich einen Alias hinzugefügt:

alias docker='lima nerdctl'

Typ:

echo alias docker='lima nerdctl' >> ~/.zprofile um diesen Alias dauerhaft zu machen. Jetzt können Sie den Befehl docker wie gewohnt verwenden, aber Images mit einem emulierten Intel-Prozessor erstellen und ausführen. Sie können den Namen des Alias ändern (z.B. dockerr), wenn Sie weiterhin in der Lage sein wollen, Ihre native Architektur zum Erstellen von Images zu verwenden.

Wenn Sie ein Docker-Image über Lima ausführen, wird automatisch eine Portweiterleitung eingerichtet, so dass jeder Port, auf dem Ihr Container lauscht, auf localhost zu sehen ist. Darüber hinaus können Siemehrere Lima-Instanzen erstellen und diese gleichzeitig verwenden. Der Befehl limactl start hat ein optionales Argument : limactl start foobar erstellt eine Lima-Instanz namens foobar, und mit LIMA_INSTANCE=foobar lima [command] können Sie Befehle auf dieser speziellen Instanz ausführen.

Nachteile

Standardmäßig ist Ihr Mac Home-Verzeichnis schreibgeschützt. Dies ist beabsichtigt. Die Schreibunterstützung für MacHome-Verzeichnisse ist experimentell. Sie können sie aktivieren, indem Sie die Datei bearbeiten und auf setzen und lima neu starten (). Abgesehen davon ist das Home-Verzeichnis von Lima beschreibbar. Wenn Sie also Ihren Code einfach dort ablegen, müssen Sie das Mac Home-Verzeichnis nicht beschreibbar machen.

Ein weiterer Nachteil ist die Geschwindigkeit. Vor allem wenn Sie in Ihrem Container kompilieren, merken Sie den Unterschied zwischen einer nativen und einer emulierten Architektur deutlich. Leider wird sich das in absehbarer Zeit nicht ändern.


Tags:

Verfasst von

Dennis Vink

Crafting digital leaders through innovative AI & cloud solutions. Empowering businesses with cutting-edge strategies for growth and transformation.

Contact

Let’s discuss how we can support your journey.