Docker Cheat Sheet: Rilis Terbaru dan Dukungan Arsitektur `arm64`
Docker telah menjadi alat yang tak tergantikan dalam dunia pengembangan dan penerapan aplikasi modern. Kemampuannya untuk mengemas, mendistribusikan, dan menjalankan aplikasi dalam container yang terisolasi telah merevolusi cara kita membangun dan mengelola perangkat lunak. Dalam lanskap teknologi yang terus berkembang, penting untuk selalu mengikuti perkembangan terbaru dari Docker, termasuk rilis terbaru dan dukungan untuk arsitektur baru seperti `arm64`.
Artikel ini akan menyediakan cheat sheet komprehensif untuk Docker, mencakup rilis terbaru, dukungan `arm64`, dan praktik terbaik untuk memanfaatkan Docker secara efektif. Baik Anda seorang pemula yang ingin mempelajari dasar-dasar Docker atau pengembang berpengalaman yang ingin memperdalam pengetahuan Anda, panduan ini akan memberikan wawasan yang berharga dan contoh praktis.
Daftar Isi
- Pendahuluan Docker
- Apa itu Docker?
- Manfaat Menggunakan Docker
- Komponen Utama Docker
- Rilis Terbaru Docker
- Ikhtisar Rilis Utama Docker
- Fitur Baru dan Peningkatan
- Pertimbangan Kompatibilitas
- Dukungan Arsitektur `arm64`
- Mengapa `arm64` Penting?
- Docker di `arm64`: Keuntungan dan Tantangan
- Memulai Docker di `arm64`
- Perintah Docker Cheat Sheet
- Manajemen Image
- Manajemen Container
- Jaringan Docker
- Docker Compose
- Docker Swarm
- Praktik Terbaik Docker
- Menulis Dockerfile yang Efisien
- Mengamankan Container Docker
- Memantau dan Mencatat Container Docker
- Mengoptimalkan Kinerja Container
- Pemecahan Masalah Umum Docker
- Masalah Jaringan
- Masalah Perizinan
- Masalah Penyimpanan
- Sumber Daya Docker Tambahan
- Dokumentasi Resmi Docker
- Komunitas Docker
- Tutorial dan Artikel Docker
- Kesimpulan
1. Pendahuluan Docker
Apa itu Docker?
Docker adalah platform containerisasi yang memungkinkan Anda untuk mengemas aplikasi dan semua dependensinya (perpustakaan, framework, konfigurasi, dll.) ke dalam sebuah unit yang disebut container. Container ini bersifat portabel dan dapat dijalankan secara konsisten di berbagai lingkungan, mulai dari laptop pengembang hingga server produksi.
Docker menggunakan teknologi containerisasi sistem operasi untuk membuat container. Container berbagi kernel sistem operasi host, tetapi diisolasi satu sama lain melalui namespace dan cgroups. Isolasi ini memastikan bahwa aplikasi yang berjalan di dalam container tidak saling mengganggu dan bahwa container dapat dijalankan secara konsisten di berbagai lingkungan.
Manfaat Menggunakan Docker
- Portabilitas: Container Docker dapat dijalankan di berbagai lingkungan, termasuk laptop pengembang, server cloud, dan mesin virtual. Ini menghilangkan masalah “berfungsi di mesin saya” dan memastikan bahwa aplikasi Anda beroperasi secara konsisten di mana pun mereka dijalankan.
- Isolasi: Container Docker mengisolasi aplikasi dan dependensinya dari sistem host dan dari container lain. Isolasi ini meningkatkan keamanan dan stabilitas aplikasi Anda.
- Efisiensi Sumber Daya: Container Docker berbagi kernel sistem operasi host, sehingga mereka lebih ringan dan menggunakan lebih sedikit sumber daya daripada mesin virtual. Ini memungkinkan Anda untuk menjalankan lebih banyak aplikasi di server yang sama.
- Skalabilitas: Docker memudahkan untuk menskalakan aplikasi Anda dengan membuat dan menjalankan beberapa container. Anda dapat menggunakan Docker Swarm atau Kubernetes untuk mengelola container Anda secara otomatis.
- Penyederhanaan Pengembangan: Docker menyederhanakan proses pengembangan dengan menyediakan lingkungan yang konsisten untuk membangun, menguji, dan menerapkan aplikasi. Ini mengurangi gesekan antara pengembang dan operator.
Komponen Utama Docker
- Docker Image: Templat baca-saja yang berisi instruksi untuk membuat container. Image berisi kode aplikasi, perpustakaan, framework, konfigurasi, dan dependensi lainnya.
- Docker Container: Instance yang dapat dijalankan dari Docker image. Container menjalankan aplikasi dan dependensinya.
- Dockerfile: File teks yang berisi instruksi untuk membangun Docker image. Dockerfile menentukan sistem operasi dasar, dependensi yang diperlukan, dan perintah untuk menjalankan aplikasi.
- Docker Hub: Registry publik untuk Docker image. Docker Hub memungkinkan Anda untuk berbagi dan menggunakan image yang dibuat oleh orang lain.
- Docker Daemon: Proses latar belakang yang mengelola Docker image dan container. Docker daemon berjalan di sistem host dan menerima perintah dari Docker CLI.
- Docker CLI (Command Line Interface): Alat baris perintah yang memungkinkan Anda untuk berinteraksi dengan Docker daemon. Docker CLI memungkinkan Anda untuk membangun image, menjalankan container, dan mengelola Docker resources.
- Docker Compose: Alat untuk mendefinisikan dan menjalankan aplikasi multi-container. Docker Compose menggunakan file YAML untuk mendefinisikan layanan, jaringan, dan volume yang diperlukan untuk aplikasi.
- Docker Swarm: Alat untuk mengelola kluster container Docker. Docker Swarm memungkinkan Anda untuk menskalakan aplikasi Anda di beberapa host dan mengelola container Anda secara otomatis.
2. Rilis Terbaru Docker
Ikhtisar Rilis Utama Docker
Docker secara teratur merilis versi baru dengan fitur, perbaikan bug, dan peningkatan keamanan. Penting untuk mengikuti perkembangan rilis terbaru agar dapat memanfaatkan fitur baru dan memastikan keamanan aplikasi Anda. Docker mengikuti skema pemberian versi semantik (Semantic Versioning), dengan format MAJOR.MINOR.PATCH
.
Berikut adalah beberapa rilis utama Docker dalam beberapa tahun terakhir:
- Docker 20.10: Rilis ini memperkenalkan banyak peningkatan pada performa, keamanan, dan kegunaan, termasuk dukungan untuk namespace pengguna, perbaikan pada mekanisme logging, dan peningkatan stabilitas.
- Docker 23.0: Rilis ini fokus pada meningkatkan pengalaman pengembang dan memperkenalkan beberapa fitur baru yang berguna untuk tim. Termasuk didalamnya adalah peningkatan pada buildkit, yang meningkatkan kecepatan dan efisiensi pembuatan image.
- Docker 24.0: Rilis ini melanjutkan tren fokus pada keamanan dan performa, dengan peningkatan pada pengelolaan jaringan dan sumber daya.
Untuk melihat daftar lengkap rilis dan catatan rilis, kunjungi Dokumentasi Rilis Docker.
Fitur Baru dan Peningkatan
Setiap rilis Docker membawa serangkaian fitur baru dan peningkatan. Beberapa contoh fitur baru dan peningkatan umum meliputi:
- Peningkatan Keamanan: Peningkatan keamanan, seperti perbaikan kerentanan dan implementasi mekanisme otentikasi baru.
- Peningkatan Kinerja: Peningkatan kinerja, seperti peningkatan kecepatan build image dan pengurangan penggunaan sumber daya.
- Fitur Baru: Fitur baru, seperti dukungan untuk arsitektur baru, alat baru untuk debugging container, dan peningkatan pada Docker Compose.
- Peningkatan Kegunaan: Peningkatan kegunaan, seperti antarmuka baris perintah yang lebih intuitif dan dokumentasi yang lebih baik.
Selalu periksa catatan rilis untuk melihat daftar lengkap fitur baru dan peningkatan dalam setiap rilis.
Pertimbangan Kompatibilitas
Saat melakukan upgrade ke versi Docker yang lebih baru, penting untuk mempertimbangkan masalah kompatibilitas. Beberapa rilis mungkin memperkenalkan perubahan yang tidak kompatibel dengan konfigurasi atau aplikasi Anda yang ada. Pastikan untuk membaca catatan rilis dengan cermat dan menguji aplikasi Anda di lingkungan pengujian sebelum melakukan upgrade ke lingkungan produksi.
Berikut adalah beberapa pertimbangan kompatibilitas umum:
- Perubahan Konfigurasi: Beberapa rilis mungkin memerlukan perubahan pada file konfigurasi Docker Anda.
- Perubahan API: Beberapa rilis mungkin memperkenalkan perubahan pada Docker API.
- Deprecation Fitur: Beberapa rilis mungkin menandai fitur sebagai usang.
Sebelum melakukan upgrade, pastikan untuk membuat cadangan konfigurasi Anda dan menguji aplikasi Anda di lingkungan pengujian untuk memastikan kompatibilitas.
3. Dukungan Arsitektur `arm64`
Mengapa `arm64` Penting?
`arm64` adalah arsitektur CPU berbasis ARM yang banyak digunakan dalam perangkat seluler, sistem tertanam, dan semakin banyak digunakan di server cloud. `arm64` menawarkan beberapa keuntungan dibandingkan arsitektur x86_64 tradisional, termasuk efisiensi daya yang lebih tinggi dan biaya yang lebih rendah.
Dengan meningkatnya popularitas `arm64`, penting bagi Docker untuk memberikan dukungan yang kuat untuk arsitektur ini. Dukungan `arm64` memungkinkan Anda untuk menjalankan container Docker di perangkat dan server berbasis ARM, membuka peluang baru untuk pengembangan dan penerapan aplikasi.
Docker di `arm64`: Keuntungan dan Tantangan
Menjalankan Docker di `arm64` menawarkan beberapa keuntungan, termasuk:
- Efisiensi Daya: Perangkat dan server berbasis ARM umumnya lebih hemat daya daripada sistem x86_64. Ini dapat menghemat biaya energi dan memperpanjang masa pakai baterai.
- Biaya Lebih Rendah: Perangkat dan server berbasis ARM seringkali lebih murah daripada sistem x86_64.
- Kepadatan Tinggi: Server berbasis ARM dapat dikemas lebih padat daripada sistem x86_64, memungkinkan Anda untuk menjalankan lebih banyak aplikasi di ruang yang sama.
Namun, ada juga beberapa tantangan yang perlu dipertimbangkan saat menjalankan Docker di `arm64`:
- Ketersediaan Image: Tidak semua Docker image tersedia untuk arsitektur `arm64`. Anda mungkin perlu membangun image Anda sendiri atau mencari image alternatif.
- Performa: Kinerja aplikasi di `arm64` mungkin berbeda dari kinerja di x86_64. Penting untuk menguji aplikasi Anda secara menyeluruh di `arm64` untuk memastikan kinerja yang memadai.
- Kompatibilitas: Beberapa aplikasi mungkin tidak kompatibel dengan `arm64`. Anda mungkin perlu memodifikasi aplikasi Anda agar dapat berjalan di `arm64`.
Memulai Docker di `arm64`
Untuk memulai Docker di `arm64`, Anda memerlukan perangkat atau server berbasis ARM dengan sistem operasi yang mendukung Docker. Berikut adalah langkah-langkah umum untuk menginstal Docker di `arm64`:
- Instal Docker: Ikuti petunjuk instalasi untuk sistem operasi Anda. Anda dapat menemukan petunjuk instalasi di Dokumentasi Instalasi Docker. Pastikan untuk memilih paket yang sesuai untuk arsitektur `arm64`.
- Verifikasi Instalasi: Setelah instalasi selesai, verifikasi bahwa Docker telah diinstal dengan benar dengan menjalankan perintah
docker version
. - Jalankan Container: Coba jalankan container sederhana, seperti container “hello-world”, untuk memastikan bahwa Docker berfungsi dengan baik. Contoh:
docker run hello-world
- Bangun Image `arm64`: Untuk membangun image Docker yang kompatibel dengan `arm64`, pastikan base image yang Anda gunakan mendukung `arm64`. Anda juga bisa menggunakan fitur build multi-arsitektur dari Docker.
4. Perintah Docker Cheat Sheet
Berikut adalah cheat sheet perintah Docker yang sering digunakan, dikelompokkan berdasarkan kategori:
Manajemen Image
docker pull [IMAGE_NAME]
: Mengunduh image dari Docker Hub atau registry lainnya.docker images
: Menampilkan daftar image yang tersedia di sistem Anda.docker build -t [IMAGE_NAME] .
: Membangun image dari Dockerfile di direktori saat ini.docker rmi [IMAGE_ID]
: Menghapus image dari sistem Anda.docker push [IMAGE_NAME]
: Mengunggah image ke Docker Hub atau registry lainnya.docker tag [SOURCE_IMAGE] [TARGET_IMAGE]
: Memberi tag image dengan nama baru.
Manajemen Container
docker run [IMAGE_NAME]
: Membuat dan menjalankan container dari image.docker run -d [IMAGE_NAME]
: Membuat dan menjalankan container di latar belakang (detached mode).docker ps
: Menampilkan daftar container yang sedang berjalan.docker ps -a
: Menampilkan daftar semua container (termasuk yang berhenti).docker stop [CONTAINER_ID]
: Menghentikan container yang sedang berjalan.docker start [CONTAINER_ID]
: Memulai container yang telah dihentikan.docker restart [CONTAINER_ID]
: Merestart container.docker rm [CONTAINER_ID]
: Menghapus container.docker exec -it [CONTAINER_ID] bash
: Masuk ke container yang sedang berjalan menggunakan terminal interaktif.docker logs [CONTAINER_ID]
: Menampilkan log container.
Jaringan Docker
docker network ls
: Menampilkan daftar jaringan Docker.docker network create [NETWORK_NAME]
: Membuat jaringan Docker baru.docker network connect [NETWORK_NAME] [CONTAINER_ID]
: Menghubungkan container ke jaringan Docker.docker network disconnect [NETWORK_NAME] [CONTAINER_ID]
: Memutuskan koneksi container dari jaringan Docker.docker port [CONTAINER_ID]
: Menampilkan pemetaan port container.
Docker Compose
docker-compose up
: Membangun dan menjalankan aplikasi multi-container yang didefinisikan dalam filedocker-compose.yml
.docker-compose up -d
: Membangun dan menjalankan aplikasi di latar belakang.docker-compose down
: Menghentikan dan menghapus aplikasi yang didefinisikan dalam filedocker-compose.yml
.docker-compose ps
: Menampilkan daftar layanan yang didefinisikan dalam filedocker-compose.yml
.docker-compose logs
: Menampilkan log dari semua layanan.
Docker Swarm
docker swarm init
: Menginisialisasi swarm baru.docker swarm join
: Bergabung ke swarm yang ada.docker swarm leave
: Meninggalkan swarm.docker service create
: Membuat service baru di swarm.docker service update
: Memperbarui service yang ada.docker service scale
: Menskalakan service.docker service ls
: Menampilkan daftar service di swarm.docker node ls
: Menampilkan daftar node di swarm.
5. Praktik Terbaik Docker
Mengikuti praktik terbaik Docker dapat membantu Anda membangun aplikasi yang lebih aman, efisien, dan mudah dipelihara.
Menulis Dockerfile yang Efisien
- Gunakan Base Image yang Kecil: Pilih base image yang sesuai dengan kebutuhan aplikasi Anda dan seminimal mungkin.
- Gunakan Multi-Stage Builds: Gunakan multi-stage builds untuk mengurangi ukuran image akhir Anda.
- Urutkan Perintah Dockerfile: Urutkan perintah Dockerfile dari yang paling jarang berubah ke yang paling sering berubah. Ini memungkinkan Docker untuk menggunakan cache layer secara efektif.
- Hindari Menginstal Paket yang Tidak Perlu: Hanya instal paket yang benar-benar diperlukan oleh aplikasi Anda.
- Bersihkan Setelah Instalasi: Hapus file dan direktori sementara setelah instalasi selesai.
- Gunakan
.dockerignore
: Gunakan file.dockerignore
untuk mengecualikan file dan direktori yang tidak perlu dari build image.
Mengamankan Container Docker
- Gunakan User Non-Root: Jalankan aplikasi Anda sebagai user non-root di dalam container.
- Terapkan Batasan Sumber Daya: Terapkan batasan sumber daya (CPU, memori, disk) pada container Anda.
- Gunakan Seccomp Profiles: Gunakan Seccomp profiles untuk membatasi panggilan sistem yang dapat dilakukan oleh container.
- Gunakan AppArmor atau SELinux: Gunakan AppArmor atau SELinux untuk memberikan isolasi yang lebih kuat antara container dan sistem host.
- Lakukan Pemindaian Kerentanan: Lakukan pemindaian kerentanan secara teratur pada image dan container Anda.
- Perbarui Docker Secara Teratur: Pastikan untuk selalu menggunakan versi Docker terbaru dengan perbaikan keamanan terbaru.
Memantau dan Mencatat Container Docker
- Gunakan Alat Pemantauan: Gunakan alat pemantauan seperti Prometheus, Grafana, atau Datadog untuk memantau kinerja container Anda.
- Konfigurasikan Logging: Konfigurasikan logging yang tepat untuk container Anda. Kirim log ke sistem logging terpusat.
- Gunakan Logging Driver yang Tepat: Pilih logging driver yang sesuai dengan kebutuhan Anda. Docker menyediakan berbagai logging driver, seperti
json-file
,syslog
, danfluentd
. - Pantau Penggunaan Sumber Daya: Pantau penggunaan sumber daya container Anda (CPU, memori, disk) untuk mengidentifikasi potensi masalah kinerja.
- Atur Alerter: Atur alerter untuk memberi tahu Anda tentang masalah kritis, seperti penggunaan CPU yang tinggi, memori yang habis, atau kesalahan aplikasi.
Mengoptimalkan Kinerja Container
- Gunakan Caching: Manfaatkan caching layer Docker untuk mempercepat build image.
- Optimalkan Aplikasi Anda: Optimalkan aplikasi Anda untuk kinerja. Gunakan algoritma yang efisien, kurangi penggunaan memori, dan minimalkan I/O disk.
- Gunakan Network yang Efisien: Gunakan network yang efisien untuk komunikasi antar container. Pertimbangkan untuk menggunakan jaringan internal Docker.
- Gunakan Volume dengan Hati-Hati: Gunakan volume dengan hati-hati. Volume dapat mempengaruhi kinerja, terutama jika digunakan untuk menyimpan data yang sering diakses.
- Sesuaikan Sumber Daya: Sesuaikan sumber daya container (CPU, memori) untuk mengoptimalkan kinerja.
6. Pemecahan Masalah Umum Docker
Berikut adalah beberapa masalah umum yang mungkin Anda temui saat menggunakan Docker dan cara memecahkannya:
Masalah Jaringan
- Container Tidak Dapat Terhubung ke Internet:
- Pastikan container Anda memiliki akses ke internet. Periksa konfigurasi jaringan container Anda dan firewall sistem host.
- Pastikan DNS di dalam container dikonfigurasi dengan benar.
- Container Tidak Dapat Terhubung ke Container Lain:
- Pastikan container Anda berada di jaringan Docker yang sama.
- Periksa aturan firewall yang mungkin menghalangi komunikasi antar container.
- Pastikan nama host container dapat diselesaikan dengan benar.
- Port Tidak Dipetakan dengan Benar:
- Pastikan Anda telah memetakan port container dengan benar ke port sistem host menggunakan opsi
-p
atau--publish
. - Periksa firewall sistem host untuk memastikan port yang dipetakan terbuka.
- Pastikan Anda telah memetakan port container dengan benar ke port sistem host menggunakan opsi
Masalah Perizinan
- Perizinan Ditolak:
- Pastikan user yang menjalankan aplikasi di dalam container memiliki izin yang diperlukan untuk mengakses file dan direktori.
- Pertimbangkan untuk menggunakan volume Docker untuk berbagi file dan direktori antara sistem host dan container dengan izin yang tepat.
- Hindari menjalankan aplikasi sebagai user root di dalam container.
- Tidak Dapat Menulis ke Volume:
- Pastikan volume Docker memiliki izin yang tepat.
- Periksa kepemilikan dan izin file dan direktori di dalam volume.
Masalah Penyimpanan
- Disk Penuh:
- Periksa penggunaan disk sistem host Anda. Hapus image dan container yang tidak digunakan lagi.
- Bersihkan log container secara teratur.
- Gunakan volume Docker untuk menyimpan data yang besar atau sering berubah.
- Masalah Volume:
- Pastikan volume Docker dikonfigurasi dengan benar.
- Periksa ketersediaan dan integritas penyimpanan yang mendasari volume.
- Pertimbangkan untuk menggunakan volume yang dikelola Docker (named volumes) untuk menyederhanakan manajemen volume.
7. Sumber Daya Docker Tambahan
Berikut adalah beberapa sumber daya Docker tambahan yang dapat membantu Anda mempelajari lebih lanjut tentang Docker dan memecahkan masalah:
- Dokumentasi Resmi Docker:
- https://docs.docker.com/
- Dokumentasi resmi Docker adalah sumber daya yang komprehensif yang mencakup semua aspek Docker, mulai dari dasar-dasar hingga topik lanjutan.
- Komunitas Docker:
- https://www.docker.com/community/
- Komunitas Docker adalah komunitas online yang aktif di mana Anda dapat bertanya, berbagi pengetahuan, dan terhubung dengan pengguna Docker lainnya.
- Tutorial dan Artikel Docker:
- Ada banyak tutorial dan artikel Docker yang tersedia online. Anda dapat menemukan tutorial dan artikel ini di blog, situs web, dan platform video seperti YouTube.
8. Kesimpulan
Docker adalah alat yang ampuh untuk pengembangan dan penerapan aplikasi modern. Dengan mengikuti cheat sheet ini dan praktik terbaik Docker, Anda dapat memanfaatkan Docker secara efektif untuk membangun aplikasi yang lebih portabel, aman, dan efisien. Jangan lupa untuk selalu mengikuti perkembangan rilis terbaru Docker dan dukungan untuk arsitektur baru seperti `arm64` untuk memanfaatkan fitur dan peningkatan terbaru.
Semoga cheat sheet ini bermanfaat! Selamat menggunakan Docker!
“`