Cara Menggunakan Apple Container: Alternatif Docker Open-Source di Swift

Mark Ponomarev

Mark Ponomarev

10 June 2025

Cara Menggunakan Apple Container: Alternatif Docker Open-Source di Swift

Kontainer telah menjadi alat yang sangat diperlukan. Mereka menawarkan portabilitas, konsistensi, dan efisiensi, memungkinkan pengembang untuk membangun dan menerapkan aplikasi dengan andal di berbagai lingkungan. Selama bertahun-tahun, Docker telah menjadi standar de facto di macOS, tetapi pesaing baru, yang lahir langsung dari Apple, siap menawarkan pengalaman yang lebih asli, terintegrasi, dan disederhanakan bagi pengembang di Apple Silicon: container.

container adalah alat sumber terbuka baru dari Apple yang memungkinkan Anda membuat dan menjalankan kontainer Linux standar yang sesuai dengan OCI di Mac Anda. Ditulis sepenuhnya dalam Swift dan dioptimalkan untuk Apple Silicon, ini dirancang untuk menjadi alternatif yang ringan dan berkinerja tinggi untuk runtime kontainer lainnya. Ini memanfaatkan teknologi virtualisasi macOS sendiri untuk menjalankan kontainer sebagai mesin virtual minimal dan terisolasi, menjanjikan keamanan yang lebih baik dan jejak yang lebih kecil.

Artikel ini memberikan pembahasan mendalam tentang proyek container Apple. Kita akan menjelajahi arsitekturnya, manfaat utamanya, dan kemudian menelusuri tutorial komprehensif tentang cara membangun, menjalankan, dan berbagi aplikasi terkontainerisasi pertama Anda. Baik Anda seorang pengembang backend berpengalaman atau pengguna Mac yang penasaran, Anda akan menemukan semua yang Anda butuhkan untuk memulai dengan alat baru yang menarik ini.

💡
Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform Terintegrasi, All-in-One agar Tim Pengembang Anda bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
button

Mengapa Alat Kontainer Baru? Visi di Balik container

Dalam lanskap yang didominasi oleh pemain mapan, mengapa Apple memutuskan untuk membangun alat kontainernya sendiri? Jawabannya terletak pada visi untuk pengalaman yang terintegrasi secara mendalam, berkinerja tinggi, dan ramah pengembang pada perangkat keras dan perangkat lunaknya sendiri. container bukan hanya kloningan Docker lainnya; ini adalah pembayangan kembali tentang apa arti kontainerisasi di Mac.

Performa Asli di Apple Silicon

Tidak seperti solusi lain yang mungkin mengandalkan mesin virtual Linux yang lebih berat atau lapisan kompatibilitas lintas platform, container dibangun dari awal untuk Apple Silicon. Ini adalah aplikasi Swift yang berbicara langsung dengan Virtualization.framework asli Apple. Ini menghasilkan keunggulan kinerja yang signifikan. Tidak ada lapisan emulasi seperti Rosetta 2 yang terlibat untuk runtime itu sendiri, dan setiap kontainer berjalan di VM ringan sendiri, booting dalam sebagian kecil waktu yang dibutuhkan untuk meluncurkan mesin virtual yang lengkap.

Arsitektur yang Unik dan Aman

Keamanan adalah landasan desain container. Ikhtisar teknis mengungkapkan keputusan arsitektur utama: alih-alih menjalankan semua kontainer dalam satu VM Linux bersama yang tunggal, container meluncurkan micro-VM minimal dan khusus untuk setiap kontainer.

Model "satu VM per kontainer" ini menyediakan isolasi tingkat perangkat keras yang kuat. Proses yang keluar dari kontainernya akan menemukan dirinya di dalam VM tujuan tunggal yang sangat dibatasi, bukan di lingkungan bersama dengan akses ke kontainer lain. Ini secara signifikan mengurangi permukaan serangan potensial dan meningkatkan postur keamanan keseluruhan lingkungan pengembangan Anda.

Kepatuhan OCI: Berinteraksi dengan Baik dengan Lainnya

Meskipun arsitekturnya unik, container sepenuhnya merangkul standar terbuka. Ini mengonsumsi dan menghasilkan image yang sesuai dengan Open Container Initiative (OCI). Ini adalah fitur penting, karena berarti Anda tidak terkunci dalam ekosistem berpemilik. Anda dapat menarik image standar dari Docker Hub, menjalankannya dengan container, membangun image baru, dan mendorongnya kembali ke registri yang sesuai OCI apa pun seperti GitHub Container Registry (ghcr.io). Image yang dibangun dengan container Anda akan bekerja dengan mulus di alat lain dan di pipeline CI/CD produksi.

Integrasi macOS yang Mendalam

container adalah warga negara yang baik di macOS. Ini berintegrasi dengan teknologi sistem inti untuk memberikan pengalaman pengguna yang mulus:

Di Balik Layar: Penyelaman Teknis Singkat

Alat baris perintah container (container) adalah klien yang berkomunikasi dengan proses server latar belakang, container-apiserver. Server ini, yang Anda mulai dengan container system start, mengelola segalanya.

Saat Anda mengeluarkan perintah seperti container run, server API meluncurkan pembantu runtime khusus (container-runtime-linux) untuk kontainer tertentu itu. Pembantu ini, pada gilirannya, menggunakan Virtualization.framework untuk meluncurkan VM Linux baru yang minimal yang menampung proses kontainer Anda. Arsitektur ini elegan, tangguh, dan dirancang untuk keamanan dan performa.

Penting untuk dicatat bahwa, sebagai proyek baru, container memiliki beberapa keterbatasan. Ini membutuhkan versi macOS modern (macOS 15, dengan performa terbaik di macOS 26 Beta 1 terbaru). Jaringan antara kontainer dan host memiliki beberapa solusi khusus, dan fitur lanjutan seperti memory ballooning masih dalam pengembangan. Namun, fondasinya kuat dan proyek ini berkembang pesat.

Cara Menggunakan container: Tutorial Langkah demi Langkah

Mari kita mulai mencoba. Tutorial ini akan memandu Anda melalui seluruh siklus hidup kontainer: membangun image untuk server web sederhana, menjalankannya, berinteraksi dengannya, dan menerbitkannya.

Langkah 1: Instalasi dan Pengaturan

Pertama, pastikan Anda memenuhi persyaratan: Mac Apple Silicon yang menjalankan versi macOS terbaru.

Instal container: Unduh paket installer bertanda tangan terbaru dari halaman rilis GitHub proyek. Klik dua kali file .pkg dan ikuti petunjuk instalasi.

Mulai Layanan: Buka terminal Anda dan mulai layanan sistem container.

container system start

Pertama kali Anda menjalankan ini, kemungkinan akan meminta Anda untuk mengunduh dan menginstal kernel Linux default. Ketik y dan tekan Enter untuk melanjutkan.

Verifikasi Instalasi: Periksa apakah layanan berjalan dengan mencantumkan semua kontainer yang tersedia (yang seharusnya tidak ada pada saat ini).

container ls -a
# Anda akan melihat header kosong:
# ID  IMAGE  OS  ARCH  STATE  ADDR

Langkah 2: Membangun Image Pertama Anda

Sekarang, mari kita buat image kontainer untuk server web Python sederhana.

Buat Direktori Proyek:

mkdir web-test
cd web-test

Buat Dockerfile: Di dalam direktori web-test, buat file bernama Dockerfile (atau Containerfile) dengan konten berikut. File ini mendefinisikan "resep" untuk image kita.

# Mulai dari image dasar Python yang ringan
FROM docker.io/python:alpine

# Atur direktori kerja di dalam kontainer
WORKDIR /content

# Tambahkan utilitas 'curl' untuk pengujian
RUN apk add curl

# Buat file HTML sederhana
RUN echo '<!DOCTYPE html><html><head><title>Hello from Container</title></head><body><h1>Hello, Apple Container!</h1></body></html>' > index.html

# Perintah yang akan dijalankan saat kontainer dimulai
CMD ["python3", "-m", "http.server", "80", "--bind", "0.0.0.0"]

Bangun Image: Sekarang, beri tahu container untuk membangun image dari Dockerfile Anda. Kita akan memberinya tag dengan nama web-test.

container build --tag web-test --file Dockerfile .

. di akhir memberi tahu builder untuk menggunakan direktori saat ini sebagai konteksnya.

Cantumkan Image Anda: Setelah pembangunan selesai, Anda dapat melihat image baru Anda di penyimpanan image lokal.

container images list
# Anda akan melihat image `web-test` Anda dan image dasar `python:alpine`.
# NAME      TAG     DIGEST
# python    alpine  b4d299311845...
# web-test  latest  25b99501f174...

Langkah 3: Menjalankan Kontainer Anda

Dengan image kita yang sudah dibangun, mari kita jalankan.

Jalankan Server Web: Gunakan perintah container run untuk memulai kontainer dari image web-test Anda.

container run --name my-web-server --detach --rm web-test

Mari kita uraikan flag-flag tersebut:

Periksa Kontainer yang Berjalan: Cantumkan kontainer yang aktif.

container ls

Anda akan melihat kontainer my-web-server Anda dalam status running, bersama dengan alamat IP yang ditetapkan di kolom ADDR (misalnya, 192.168.64.3).

Akses Server Web Anda: Buka browser web dan navigasi ke alamat IP yang ditunjukkan pada langkah sebelumnya. Anda akan melihat pesan "Hello, Apple Container!" Anda.

# Ganti IP dengan yang dari `container ls`
open <http://192.168.64.3>

Langkah 4: Berinteraksi dengan Kontainer

container menyediakan alat yang canggih untuk berinteraksi dengan kontainer Anda yang berjalan.

Jalankan Perintah: Anda dapat menjalankan perintah langsung di dalam kontainer menggunakan container exec. Mari kita cantumkan file di direktori konten server web kita.

container exec my-web-server ls /content
# Output: index.html

Buka Shell Interaktif: Untuk debugging yang lebih kompleks, Anda bisa mendapatkan shell interaktif di dalam kontainer.

container exec -it my-web-server sh

Flag -it (--interactive dan --tty) sangat penting untuk menghubungkan terminal Anda ke shell di dalam kontainer. Anda akan masuk ke prompt shell di dalam WORKDIR kontainer Anda. Anda bisa melihat-lihat, memeriksa proses, dan kemudian mengetik exit untuk kembali ke terminal Mac Anda.

Langkah 5: Menerbitkan Image Anda

Berbagi pekerjaan Anda mudah. Mari kita dorong (push) image kita ke registri kontainer. Contoh ini menggunakan Docker Hub, tetapi registri OCI apa pun akan berfungsi. (Ini mengasumsikan Anda memiliki akun Docker Hub dengan nama pengguna fido).

Masuk ke Registri:

# Ini akan meminta nama pengguna dan kata sandi/token Anda
container registry login docker.io

Beri Tag Image untuk Penerbitan: Registri memerlukan image diberi nama dalam format registry/username/image:tag. Mari kita buat tag baru untuk image kita.

container images tag web-test docker.io/fido/web-test:latest

Dorong (Push) Image:

container images push docker.io/fido/web-test:latest

Image Anda sekarang tersedia untuk ditarik (pull) dan dijalankan oleh orang lain, di platform apa pun yang sesuai OCI!

Langkah 6: Membersihkan

Setelah selesai, Anda dapat menghentikan kontainer dan mematikan layanan.

# Hentikan kontainer
container stop my-web-server

# Hentikan semua layanan kontainer
container system stop

Lebih dari Sekadar Dasar

Tutorial ini mencakup alur kerja inti, tetapi container dapat melakukan lebih banyak. Berikut adalah beberapa fitur dari dokumentasi how-to.md:

Manajemen Sumber Daya: Anda dapat mengontrol sumber daya yang dialokasikan ke kontainer Anda. Untuk pembangunan yang intensif memori, Anda dapat memberi builder lebih banyak RAM dan CPU:

container builder start --cpus 8 --memory 16g

Berbagi File: Anda dapat me-mount direktori dari Mac Anda ke dalam kontainer menggunakan flag -volume, yang penting untuk alur kerja pengembangan di mana Anda ingin mengedit kode di host dan melihat perubahan secara langsung di kontainer.

container run --volume ${HOME}/my-project:/app my-image

Pembangunan Multi-Platform: Anda dapat membangun image yang berjalan di arsitektur Apple Silicon (arm64) dan Intel (amd64) dalam satu perintah, sempurna untuk menerapkan ke lingkungan server yang beragam.

container build --arch arm64 --arch amd64 --tag my-multi-arch-image .

Inspeksi Tingkat Lanjut: Perintah container inspect menyediakan informasi JSON terperinci tentang kontainer dan image, yang berguna untuk scripting dan otomatisasi.

Kesimpulan

container Apple lebih dari sekadar alat baru; ini adalah pernyataan. Ini menandakan komitmen untuk menyediakan alat pengembang terintegrasi kelas satu untuk era modern pengembangan cloud-native. Dengan membangun runtime kontainer yang ringan, aman, dan berkinerja tinggi langsung ke dalam OS, Apple menurunkan hambatan masuk untuk kontainerisasi di Mac dan menawarkan alternatif yang menarik untuk solusi yang sudah ada.

Meskipun proyek ini masih muda, fondasinya kokoh, arsitekturnya kuat, dan kepatuhannya pada standar terbuka memastikan akan menjadi pemain yang berharga dalam ekosistem kontainer yang lebih luas. Jika Anda seorang pengembang di Mac Apple Silicon, container adalah proyek yang harus Anda perhatikan—dan coba—hari ini.

💡
Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform Terintegrasi, All-in-One agar Tim Pengembang Anda bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
button

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.