Container sind zu einem unverzichtbaren Werkzeug geworden. Sie bieten Portabilität, Konsistenz und Effizienz und ermöglichen es Entwicklern, Anwendungen zuverlässig über verschiedene Umgebungen hinweg zu erstellen und bereitzustellen. Seit Jahren ist Docker der De-facto-Standard auf macOS, aber ein neuer Herausforderer, direkt von Apple entwickelt, ist bereit, Entwicklern auf Apple Silicon ein nativeres, integrierteres und schlankeres Erlebnis zu bieten: container
.
container
ist ein neues Open-Source-Tool von Apple, mit dem Sie standardmäßige, OCI-konforme Linux-Container auf Ihrem Mac erstellen und ausführen können. Vollständig in Swift geschrieben und für Apple Silicon optimiert, ist es als leichtgewichtige, leistungsstarke Alternative zu anderen Container-Runtimes konzipiert. Es nutzt die eigenen Virtualisierungstechnologien von macOS, um Container als minimale, isolierte virtuelle Maschinen auszuführen, was bessere Sicherheit und einen geringeren Ressourcenverbrauch verspricht.
Dieser Artikel bietet einen tiefen Einblick in Apples container
-Projekt. Wir werden seine Architektur und seine Hauptvorteile untersuchen und dann ein umfassendes Tutorial durchgehen, wie Sie Ihre erste containerisierte Anwendung erstellen, ausführen und teilen können. Egal, ob Sie ein erfahrener Backend-Entwickler oder ein neugieriger Mac-Benutzer sind, hier finden Sie alles, was Sie für den Einstieg in dieses aufregende neue Tool benötigen.
Möchten Sie eine integrierte All-in-One-Plattform für Ihr Entwicklerteam, um mit maximaler Produktivität zusammenzuarbeiten?
Apidog erfüllt alle Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!
Warum ein neues Container-Tool? Die Vision hinter container
In einer Landschaft, die von etablierten Akteuren dominiert wird, warum hat Apple beschlossen, ein eigenes Container-Tool zu entwickeln? Die Antwort liegt in der Vision für ein tief integriertes, leistungsstarkes und entwicklerfreundliches Erlebnis auf eigener Hardware und Software. container
ist nicht nur ein weiterer Docker-Klon; es ist eine Neuinterpretation dessen, was Containerisierung auf einem Mac sein kann.
Native Leistung auf Apple Silicon
Im Gegensatz zu anderen Lösungen, die auf schwerfälligere Linux-VMs oder Cross-Plattform-Kompatibilitätsschichten angewiesen sein können, wurde container
von Grund auf für Apple Silicon entwickelt. Es ist eine Swift-Anwendung, die direkt mit Apples nativem Virtualization.framework
kommuniziert. Dies führt zu einem erheblichen Leistungsvorteil. Es gibt keine Emulationsschicht wie Rosetta 2 für die Runtime selbst, und jeder Container läuft in seiner eigenen leichtgewichtigen VM, die in einem Bruchteil der Zeit bootet, die eine vollwertige virtuelle Maschine benötigt.
Eine einzigartig sichere Architektur
Sicherheit ist ein Eckpfeiler des container
-Designs. Die technische Übersicht offenbart eine wichtige Architekturentscheidung: Anstatt alle Container innerhalb einer einzigen, gemeinsam genutzten Linux-VM auszuführen, startet container
eine dedizierte, minimale Mikro-VM für jeden Container.
Dieses 'eine VM pro Container'-Modell bietet eine robuste Isolation auf Hardware-Ebene. Ein Prozess, der aus seinem Container entkommt, würde sich in einer stark eingeschränkten, auf einen einzigen Zweck ausgerichteten VM wiederfinden, nicht in einer gemeinsam genutzten Umgebung mit Zugriff auf andere Container. Dies reduziert die potenzielle Angriffsfläche erheblich und verbessert die allgemeine Sicherheitshaltung Ihrer Entwicklungsumgebung.
OCI-Konformität: Gut mit anderen zusammenarbeiten
Trotz seiner einzigartigen Architektur unterstützt container
vollständig offene Standards. Es konsumiert und produziert Open Container Initiative (OCI)-konforme Images. Dies ist eine entscheidende Funktion, da sie bedeutet, dass Sie nicht an ein proprietäres Ökosystem gebunden sind. Sie können ein Standard-Image von Docker Hub ziehen, es mit container
ausführen, ein neues Image erstellen und es an jede OCI-konforme Registry wie GitHub Container Registry (ghcr.io) zurückpushen. Ihre mit container
erstellten Images funktionieren nahtlos in anderen Tools und in Produktions-CI/CD-Pipelines.
Tiefe macOS-Integration
container
ist ein 'guter Bürger' auf macOS. Es integriert sich in zentrale Systemtechnologien, um eine reibungslose Benutzererfahrung zu bieten:
- Virtualisierung & Netzwerk: Verwendet
Virtualization.framework
undvmnet
für effizientes VM- und Netzwerkmanagement. - Dienstverwaltung: Der
container-apiserver
-Daemon wird vonlaunchd
verwaltet, der Standardmethode zur Verwaltung von Diensten auf macOS. - Sicherheit: Nutzt Keychain-Dienste zur sicheren Speicherung von Registry-Anmeldeinformationen.
- Protokollierung: Integriert sich in das vereinheitlichte Protokollierungssystem von macOS, sodass alle Diagnoseausgaben an einem vertrauten Ort zu finden sind.
Unter der Haube: Ein kurzer technischer Einblick
Das container
-Befehlszeilentool (container
) ist ein Client, der mit einem Hintergrundserverprozess, dem container-apiserver
, kommuniziert. Dieser Server, den Sie mit container system start
starten, verwaltet alles.
Wenn Sie einen Befehl wie container run
ausführen, startet der API-Server einen dedizierten Runtime-Helfer (container-runtime-linux
) für diesen spezifischen Container. Dieser Helfer wiederum verwendet das Virtualization.framework
, um eine neue, minimale Linux-VM hochzufahren, die die Prozesse Ihres Containers hostet. Diese Architektur ist elegant, robust und auf Sicherheit und Leistung ausgelegt.
Es ist wichtig zu beachten, dass container
als neues Projekt einige Einschränkungen aufweist. Es erfordert eine moderne Version von macOS (macOS 15, mit bester Leistung auf der neuesten macOS 26 Beta 1). Die Vernetzung zwischen Containern und dem Host erfordert einige spezifische Workarounds, und fortgeschrittene Funktionen wie Memory Ballooning sind noch in Entwicklung. Die Grundlage ist jedoch stark und das Projekt entwickelt sich schnell weiter.
So verwenden Sie container
: Ein Schritt-für-Schritt-Tutorial
Legen wir los. Dieses Tutorial führt Sie durch den gesamten Lebenszyklus eines Containers: das Erstellen eines Images für einen einfachen Webserver, das Ausführen, die Interaktion damit und das Veröffentlichen.
Schritt 1: Installation und Einrichtung
Stellen Sie zunächst sicher, dass Sie die Anforderungen erfüllen: einen Apple Silicon Mac mit einer aktuellen Version von macOS.
container
installieren: Laden Sie das neueste signierte Installationspaket von der GitHub-Release-Seite des Projekts herunter. Doppelklicken Sie auf die .pkg
-Datei und folgen Sie den Installationsanweisungen.
Dienst starten: Öffnen Sie Ihr Terminal und starten Sie die container
-Systemdienste.
container system start
Wenn Sie dies zum ersten Mal ausführen, werden Sie wahrscheinlich aufgefordert, einen Standard-Linux-Kernel herunterzuladen und zu installieren. Geben Sie y
ein und drücken Sie die Eingabetaste, um fortzufahren.
Installation überprüfen: Überprüfen Sie, ob der Dienst läuft, indem Sie alle verfügbaren Container auflisten (zu diesem Zeitpunkt sollten es keine sein).
container ls -a
# You should see empty headers:
# ID IMAGE OS ARCH STATE ADDR
Schritt 2: Ihr erstes Image erstellen
Nun erstellen wir ein Container-Image für einen einfachen Python-Webserver.
Ein Projektverzeichnis erstellen:
mkdir web-test
cd web-test
Eine Dockerfile
erstellen: Erstellen Sie im Verzeichnis web-test
eine Datei namens Dockerfile
(oder Containerfile
) mit folgendem Inhalt. Diese Datei definiert das "Rezept" für unser Image.
# Start from a lightweight Python base image
FROM docker.io/python:alpine
# Set the working directory inside the container
WORKDIR /content
# Add the 'curl' utility for testing
RUN apk add curl
# Create a simple HTML file
RUN echo '<!DOCTYPE html><html><head><title>Hello from Container</title></head><body><h1>Hello, Apple Container!</h1></body></html>' > index.html
# The command to run when the container starts
CMD ["python3", "-m", "http.server", "80", "--bind", "0.0.0.0"]
Das Image erstellen: Weisen Sie container
nun an, ein Image aus Ihrer Dockerfile
zu erstellen. Wir werden es mit dem Namen web-test
taggen.
container build --tag web-test --file Dockerfile .
Der .
am Ende weist den Builder an, das aktuelle Verzeichnis als Kontext zu verwenden.
Ihre Images auflisten: Nach Abschluss des Builds können Sie Ihr neues Image im lokalen Image-Speicher sehen.
container images list
# You should see your `web-test` image and the `python:alpine` base image.
# NAME TAG DIGEST
# python alpine b4d299311845...
# web-test latest 25b99501f174...
Schritt 3: Ihren Container ausführen
Nachdem unser Image erstellt ist, führen wir es aus.
Den Webserver ausführen: Verwenden Sie den Befehl container run
, um einen Container aus Ihrem web-test
-Image zu starten.
container run --name my-web-server --detach --rm web-test
Schauen wir uns diese Flags genauer an:
-name my-web-server
: Gibt unserem Container einen einprägsamen Namen.-detach
(oderd
): Führt den Container im Hintergrund aus.-rm
: Entfernt automatisch den Datensatz des Containers, wenn er stoppt, um Ordnung zu halten.
Den laufenden Container überprüfen: Listen Sie die aktiven Container auf.
container ls
Sie sehen Ihren my-web-server
-Container im Zustand running
, zusammen mit seiner zugewiesenen IP-Adresse in der Spalte ADDR
(z. B. 192.168.64.3
).
Auf Ihren Webserver zugreifen: Öffnen Sie einen Webbrowser und navigieren Sie zu der im vorherigen Schritt angezeigten IP-Adresse. Sie sollten Ihre Nachricht "Hello, Apple Container!" sehen.
# Replace the IP with the one from `container ls`
open <http://192.168.64.3>
Schritt 4: Mit dem Container interagieren
container
bietet leistungsstarke Tools zur Interaktion mit Ihren laufenden Containern.
Einen Befehl ausführen: Sie können Befehle direkt im Container mit container exec
ausführen. Listen wir die Dateien im Inhaltsverzeichnis unseres Webservers auf.
container exec my-web-server ls /content
# Output: index.html
Eine interaktive Shell öffnen: Für komplexeres Debugging können Sie eine interaktive Shell im Container erhalten.
container exec -it my-web-server sh
Die -it
-Flags (--interactive
und --tty
) sind entscheidend, um Ihr Terminal mit der Shell im Container zu verbinden. Sie werden in eine Shell-Eingabeaufforderung innerhalb des WORKDIR
Ihres Containers gebracht. Sie können sich umsehen, Prozesse überprüfen und dann exit
eingeben, um zu Ihrem Mac-Terminal zurückzukehren.
Schritt 5: Ihr Image veröffentlichen
Ihre Arbeit zu teilen ist einfach. Pushen wir unser Image in eine Container-Registry. Dieses Beispiel verwendet Docker Hub, aber jede OCI-Registry funktioniert. (Dies setzt voraus, dass Sie ein Docker Hub-Konto mit dem Benutzernamen fido
haben).
Bei der Registry anmelden:
# This will prompt for your username and password/token
container registry login docker.io
Das Image zum Veröffentlichen taggen: Registries erfordern, dass Images im Format registry/username/image:tag
benannt werden. Erstellen wir einen neuen Tag für unser Image.
container images tag web-test docker.io/fido/web-test:latest
Das Image pushen:
container images push docker.io/fido/web-test:latest
Ihr Image ist nun für andere zum Ziehen und Ausführen verfügbar, auf jeder OCI-konformen Plattform!
Schritt 6: Aufräumen
Wenn Sie fertig sind, können Sie den Container stoppen und den Dienst beenden.
# Stop the container
container stop my-web-server
# Stop all container services
container system stop
Jenseits der Grundlagen
Das Tutorial behandelt den Kern-Workflow, aber container
kann mehr. Hier sind einige Funktionen aus der how-to.md
-Dokumentation:
Ressourcenmanagement: Sie können die den Containern zugewiesenen Ressourcen steuern. Für speicherintensive Builds können Sie dem Builder mehr RAM und CPUs zuweisen:
container builder start --cpus 8 --memory 16g
Dateifreigabe: Sie können ein Verzeichnis von Ihrem Mac in den Container mounten, indem Sie das -volume
-Flag verwenden. Dies ist unerlässlich für Entwicklungs-Workflows, bei denen Sie Code auf dem Host bearbeiten und die Änderungen live im Container sehen möchten.
container run --volume ${HOME}/my-project:/app my-image
Multi-Plattform-Builds: Sie können Images erstellen, die sowohl auf Apple Silicon (arm64
) als auch auf Intel (amd64
)-Architekturen laufen, mit einem einzigen Befehl. Perfekt für die Bereitstellung in vielfältigen Serverumgebungen.
container build --arch arm64 --arch amd64 --tag my-multi-arch-image .
Erweiterte Inspektion: Der Befehl container inspect
liefert detaillierte JSON-Informationen über Container und Images, was für Scripting und Automatisierung nützlich ist.
Fazit
Apples container
ist mehr als nur ein neues Tool; es ist ein Statement. Es signalisiert das Engagement, erstklassige, integrierte Entwicklertools für die moderne Ära der Cloud-nativen Entwicklung bereitzustellen. Durch den Aufbau einer leichtgewichtigen, sicheren und leistungsstarken Container-Runtime direkt im Betriebssystem senkt Apple die Einstiegshürde für die Containerisierung auf dem Mac und bietet eine überzeugende Alternative zu etablierten Lösungen.
Obwohl das Projekt noch jung ist, ist seine Grundlage solide, seine Architektur fundiert und seine Einhaltung offener Standards stellt sicher, dass es ein wertvoller Akteur im breiteren Container-Ökosystem sein wird. Wenn Sie Entwickler auf einem Apple Silicon Mac sind, ist container
ein Projekt, das Sie heute beobachten – und ausprobieren – sollten.
Möchten Sie eine integrierte All-in-One-Plattform für Ihr Entwicklerteam, um mit maximaler Produktivität zusammenzuarbeiten?
Apidog erfüllt alle Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!