{"id":47987,"date":"2026-04-02T18:38:48","date_gmt":"2026-04-02T11:38:48","guid":{"rendered":"\/id\/tutorial\/?p=47987"},"modified":"2026-04-02T18:38:49","modified_gmt":"2026-04-02T11:38:49","slug":"panduan-dan-tutorial-docker","status":"publish","type":"post","link":"\/id\/tutorial\/panduan-dan-tutorial-docker","title":{"rendered":"Tutorial Docker: panduan lengkap untuk menjalankan container"},"content":{"rendered":"<p>Docker adalah platform open-source yang dirancang untuk menyederhanakan proses pengembangan, distribusi, dan menjalankan aplikasi. Proses pengiriman software menjadi lebih praktis berkat <strong>containerization<\/strong> (kontainerisasi), yaitu teknologi yang mengemas aplikasi beserta dependensinya ke dalam unit terisolasi yang disebut <strong>container<\/strong>. Dengan metode ini, software bisa berjalan secara konsisten di berbagai lingkungan.<\/p><p>Secara umum, Docker memiliki beberapa komponen utama, seperti <strong>Docker Engine<\/strong>, <strong>Docker Hub<\/strong>, <strong>image<\/strong>, <strong>container<\/strong>, <strong>Dockerfile<\/strong>, dan <strong>Docker Compose<\/strong>. Dengan memahami komponen-komponen ini, Anda bisa membuat, men-deploy, dan mengelola aplikasi berbasis container dengan lebih mudah.<\/p><p>Anda bisa menggunakan Docker melalui command line (CLI), tapi platform ini juga menyediakan versi desktop dengan antarmuka grafis. Proses konfigurasinya pun berbeda. Versi desktop bisa diinstal seperti aplikasi biasa dalam format <strong>.dmg<\/strong> atau <strong>.exe<\/strong>, sedangkan versi CLI memerlukan penginstalan melalui package manager seperti <strong>APT<\/strong> atau <strong>Homebrew<\/strong>.<\/p><p>Saat menggunakan Docker, berbagai error bisa muncul di berbagai bagian, mulai dari image, Dockerfile, hingga container yang sedang berjalan. Oleh karena itu, Anda juga perlu memahami jenis error yang umum terjadi, penyebabnya, serta cara mengatasinya agar tidak memengaruhi seluruh proses. Sudah siap belajar Docker? Yuk, langsung scroll ke bawah!<\/p><h2 class=\"wp-block-heading\" id=\"h-what-is-containerization\">Apa itu containerization?<\/h2><p>Containerization adalah metode virtualisasi tingkat sistem operasi yang digunakan untuk mengemas aplikasi agar berjalan di ruang pengguna yang terisolasi, yang disebut container.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69d03ea208326\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"572\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Visualisasi-cara-kerja-container-dibandingkan-dengan-mesin-virtual.png\/public\" alt=\"Visualisasi cara kerja container dibandingkan dengan mesin virtual tradisional.\" class=\"wp-image-47985\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Visualisasi-cara-kerja-container-dibandingkan-dengan-mesin-virtual.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Visualisasi-cara-kerja-container-dibandingkan-dengan-mesin-virtual.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Visualisasi-cara-kerja-container-dibandingkan-dengan-mesin-virtual.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Visualisasi-cara-kerja-container-dibandingkan-dengan-mesin-virtual.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Container mengemas aplikasi beserta semua komponen yang dibutuhkan, seperti kode, library sistem, dependensi, dan file konfigurasi, dalam satu lingkungan terisolasi.<\/p><p>Berbeda dengan mesin virtual (VM), container lebih ringan karena menggunakan kernel sistem operasi yang sama dari host. Dengan metode ini, aplikasi bisa berjalan secara konsisten di berbagai lingkungan tanpa bergantung pada infrastruktur tertentu.<\/p><p>Manfaat containerization meliputi:<\/p><ul class=\"wp-block-list\">\n<li><strong>Portabilitas.<\/strong> Container bisa berjalan secara konsisten di berbagai lingkungan, mulai dari perangkat lokal hingga server jarak jauh dari penyedia seperti Hostinger. Dengan cara ini, masalah kompatibilitas bisa dihindari saat aplikasi dipindahkan ke sistem yang berbeda, baik saat deployment maupun kolaborasi.<\/li>\n\n\n\n<li><strong>Efisiensi.<\/strong> VM memerlukan sistem operasi tamu lengkap dan hypervisor, sedangkan container tidak. Hal ini membuat container menjadi solusi virtualisasi yang lebih ringan dan efisien.<\/li>\n\n\n\n<li><strong>Isolasi.<\/strong> Setiap container menjalankan proses secara terpisah, dengan software, konfigurasi, stack jaringan, dan variabel lingkungan masing-masing. Kondisi ini membantu meningkatkan keamanan sekaligus mencegah konflik antar aplikasi.<\/li>\n<\/ul><h3 class=\"wp-block-heading\" id=\"h-why-should-i-use-docker\">Apa keuntungan menggunakan Docker?<\/h3><p><a href=\"\/id\/tutorial\/apa-itu-docker\">Docker<\/a> membantu menyediakan cara yang terjamin, efisien, dan terstandar untuk membuat, membagikan, dan menjalankan aplikasi. Dengan menggunakan Docker, Anda juga bisa meminimalkan beberapa masalah umum dalam pengembangan dan deployment software.<\/p><ul class=\"wp-block-list\">\n<li><strong>Perbedaan environment antar developer.<\/strong> Docker memastikan aplikasi berjalan dengan cara yang sama di setiap lingkungan, baik di perangkat developer maupun di tahap produksi. Dengan begitu, bug yang disebabkan oleh perbedaan lingkungan bisa dihindari.<\/li>\n\n\n\n<li><strong>Pengembangan dan peluncuran yang lebih cepat.<\/strong> Docker mempermudah pembuatan environment yang bisa direplikasi. Developer juga bisa langsung menggunakan fitur seperti peta atau payment gateway tanpa harus membangunnya dari nol, sehingga proses pengembangan menjadi lebih efisien.<\/li>\n\n\n\n<li><strong>Skalabilitas dan portabilitas.<\/strong> Dengan tool seperti Docker Compose, Anda bisa mendefinisikan stack aplikasi multi-container dalam satu file dan membagikannya dengan mudah. Metode ini membantu menjaga konsistensi di seluruh tim sekaligus memudahkan proses scaling sesuai kebutuhan.<\/li>\n\n\n\n<li><strong>Efisiensi resource.<\/strong> Karena container bersifat ringan dan menggunakan kernel sistem operasi host, penggunaan resource menjadi lebih hemat dibandingkan VM tradisional.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-what-are-the-core-docker-concepts\">Konsep inti Docker<\/h2><p>Docker mengemas konsep containerization ke dalam beberapa komponen inti yang saling terhubung. Semua komponen ini bekerja bersama sebagai platform untuk mengelola seluruh lifecycle aplikasi berbasis container, mulai dari proses build hingga menjalankan aplikasi multi-layanan.<\/p><h3 class=\"wp-block-heading\" id=\"h-docker-engine\">Docker Engine<\/h3><p>Docker Engine adalah teknologi open-source inti yang digunakan untuk membangun dan menjalankan container. Komponen ini menggunakan arsitektur client-server untuk mengelola berbagai objek Docker, seperti image, container, dan network.<\/p><p>Docker Engine terdiri dari tiga bagian utama:<\/p><ol class=\"wp-block-list\">\n<li><strong>Server.<\/strong> Proses daemon (dockerd) yang berjalan terus-menerus untuk menangani berbagai tugas, seperti membuat, menjalankan, dan menghapus container.<\/li>\n\n\n\n<li><strong>API.<\/strong> Antarmuka yang memungkinkan program, termasuk Docker CLI, untuk berkomunikasi dan memberikan instruksi ke daemon.<\/li>\n\n\n\n<li><strong>Docker CLI.<\/strong> Tool berbasis command line yang menjadi cara utama pengguna berinteraksi dengan Docker.<\/li>\n<\/ol><p>Agar lebih mudah dipahami, bayangkan <strong>Docker Engine<\/strong> seperti sistem kerja di restoran.<\/p><ul class=\"wp-block-list\">\n<li><strong>Server<\/strong> (dockerd) berperan seperti <strong>koki<\/strong> yang menyiapkan hidangan, yaitu komponen yang menjalankan container.<\/li>\n\n\n\n<li><strong>API<\/strong> berfungsi seperti <strong>menu dan catatan pesanan<\/strong> yang memberi tahu apa yang harus dibuat.<\/li>\n\n\n\n<li><strong>Docker CLI<\/strong> berperan seperti <strong>pelayan<\/strong> yang menerima perintah, lalu menyampaikannya ke dapur.<\/li>\n<\/ul><p>Untuk memastikan Docker Engine berjalan dan terhubung dengan baik, Anda bisa menjalankan perintah berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker ps<\/pre><p>Perintah ini meminta <strong>Docker daemon<\/strong> untuk menampilkan daftar <strong>container yang sedang berjalan<\/strong>. Kalau Docker Engine berjalan dengan normal, perintah tersebut akan menampilkan daftar container aktif.<\/p><h3 class=\"wp-block-heading\" id=\"h-docker-hub\">Docker Hub<\/h3><p><strong>Docker Hub<\/strong> adalah registry publik bawaan Docker, yaitu layanan untuk menyimpan dan mendistribusikan image. Platform ini menyediakan berbagai image resmi untuk software populer seperti <strong>nginx<\/strong>, <strong>Node<\/strong>, dan <strong>Python<\/strong>. Selain itu, pengguna juga bisa membuat repositori privat untuk menyimpan image kustom.<\/p><p>Saat membuat container, Anda biasanya membutuhkan berbagai paket software dari image tertentu. Docker Hub membantu menyederhanakan proses tersebut dengan menyediakan repository terpusat untuk mendownload image.<\/p><p>Docker Hub menggunakan <strong>tag<\/strong> untuk mengidentifikasi versi image, misalnya <strong>latest<\/strong>. Dengan penggunaan tag, Anda bisa memastikan versi yang digunakan tetap konsisten di berbagai environment.<\/p><p>Docker Hub bisa dianalogikan seperti <strong>buku resep masakan<\/strong>. Anda bisa mengambil resep yang sudah tersedia, menggunakannya, atau menyimpan resep sendiri untuk digunakan kembali.<\/p><p>Anda bisa berinteraksi dengan Docker Hub menggunakan perintah Docker. Misalnya, gunakan perintah berikut untuk mendownload image dari registry:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker pull &lt;name&gt;:&lt;tag&gt;<\/pre><p>Contohnya, untuk mendownload image Ubuntu terbaru:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker pull ubuntu:latest<\/pre><h3 class=\"wp-block-heading\" id=\"h-docker-images\">Image Docker<\/h3><p>Docker image adalah template hanya-baca yang berisi semua instruksi dan file yang dibutuhkan untuk membuat container. Di dalam image, terdapat kode aplikasi, file konfigurasi, library sistem, dan komponen sistem operasi dasar.<\/p><p>Image dibuat menggunakan Dockerfile. Setiap instruksi dalam Dockerfile akan membentuk lapisan terpisah yang tidak bisa diubah, yang menentukan isi dan perilaku image.<\/p><p>Secara sederhana, image bisa dianggap sebagai blueprint untuk suatu perangkat. Blueprint ini berisi semua instruksi yang diperlukan untuk membangun container, tapi tidak bisa diubah setelah dibuat.<\/p><p>Untuk melihat daftar image yang tersedia di sistem lokal, jalankan perintah:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker images<\/pre><p>Untuk membangun image di direktori saat ini dan memberinya tag, gunakan perintah di bawah ini. Kalau image yang dibutuhkan belum tersedia, Docker akan otomatis mendownloadnya dari Docker Hub:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build -t your-image-name:latest .<\/pre><p>Saat menggunakan image, sebaiknya Anda menggunakan hanya sedikit <a href=\"https:\/\/docs.docker.com\/build\/building\/base-images\/\" target=\"_blank\" rel=\"noopener\">base image<\/a>. Dengan begitu, ukuran image tetap kecil dan potensi celah keamanan dari komponen yang tidak diperlukan bisa diminimalkan.<\/p><h3 class=\"wp-block-heading\" id=\"h-docker-containers\">Container Docker<\/h3><p>Container adalah instance yang bisa dijalankan dari sebuah image. Container merupakan lingkungan terisolasi tempat aplikasi berjalan, lengkap dengan konfigurasi, dependensi, dan paket software yang diperlukan.<\/p><p>Saat container dibuat, Docker menambahkan lapisan yang bisa ditulis di atas lapisan hanya-baca milik image. Lapisan ini memungkinkan perubahan dilakukan pada file system di dalam container.<\/p><p>Container dirancang bersifat ephemeral atau stateless. Artinya, container bisa dihentikan, dihapus, dan dibuat ulang dengan konfigurasi yang sama tanpa memengaruhi sistem secara keseluruhan. Satu container biasanya dikelola menggunakan Docker CLI. Untuk mengelola banyak container sekaligus, Anda bisa menggunakan <strong>Docker Compose<\/strong> atau tool orkestrasi seperti <a href=\"https:\/\/www.hostinger.com\/tutorials\/kubernetes-tutorial\">Kubernetes<\/a>.<\/p><p>Kalau menggunakan analogi seperti sebelumnya, container adalah mesin yang benar-benar dijalankan berdasarkan blueprint dari image. Saat Anda membuat kontainer Docker, Anda menyiapkan dan memulai mesin tersebut untuk menjalankan proses yang didefinisikan di dalam image.<\/p><p>Untuk <a href=\"\/id\/tutorial\/docker-container\">menjalankan container<\/a> interaktif dari image Ubuntu, gunakan perintah berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -it ubuntu \/bin\/bash<\/pre><p>Perintah ini akan menjalankan image <strong>Ubuntu<\/strong>, membuat container, lalu membuka shell interaktif.<\/p><h3 class=\"wp-block-heading\" id=\"h-dockerfiles\">Dockerfile<\/h3><p><strong>Dockerfile<\/strong> adalah file teks yang berisi kumpulan instruksi untuk membangun Docker image. Semua konfigurasi didefinisikan di dalamnya, mulai dari base image, variabel lingkungan, hingga kode aplikasi.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"69d03ea209f48\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"445\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Alur-membangun-container-dari-Dockerfile-bagian-2.png\/public\" alt=\"Alur yang menunjukkan proses build container Docker dari Dockerfile.\" class=\"wp-image-47986\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Alur-membangun-container-dari-Dockerfile-bagian-2.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Alur-membangun-container-dari-Dockerfile-bagian-2.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Alur-membangun-container-dari-Dockerfile-bagian-2.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2026\/03\/Alur-membangun-container-dari-Dockerfile-bagian-2.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Beberapa instruksi yang paling umum digunakan dalam Dockerfile:<\/p><ul class=\"wp-block-list\">\n<li><strong>FROM.<\/strong> Menentukan base image untuk proses build.<\/li>\n\n\n\n<li><strong>RUN.<\/strong> Menjalankan perintah selama proses build image.<\/li>\n\n\n\n<li><strong>COPY atau ADD.<\/strong> Menyalin file dari host ke dalam image.<\/li>\n\n\n\n<li><strong>CMD atau ENTRYPOINT.<\/strong> Menentukan perintah yang dijalankan saat container dimulai.<\/li>\n\n\n\n<li><strong>ENV.<\/strong> Menentukan variabel lingkungan.<\/li>\n\n\n\n<li><strong>WORKDIR.<\/strong> Menentukan direktori kerja untuk instruksi berikutnya.<\/li>\n<\/ul><p>Sebagian besar instruksi dalam Dockerfile akan membuat <strong>lapisan<\/strong> baru pada image. Namun, beberapa instruksi seperti <strong>WORKDIR<\/strong> hanya mengatur metadata tanpa membuat lapisan baru.<\/p><p>Berikut contoh isi Dockerfile:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">FROM python:3.9-slim\nWORKDIR \/app\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\nCOPY . .\nCMD [\"python\", \"app.py\"]<\/pre><h3 class=\"wp-block-heading\" id=\"h-docker-compose\"><strong>Docker Compose<\/strong> <\/h3><p><strong>Docker Compose<\/strong> adalah tool yang digunakan untuk mendefinisikan dan mengelola <strong>aplikasi multi-container<\/strong> melalui satu file konfigurasi, biasanya bernama <strong>docker-compose.yml<\/strong>.<\/p><p>Di dalam file tersebut, Anda bisa mendefinisikan semua container, network, dan volume yang dibutuhkan untuk menjalankan aplikasi. Setiap container dalam Docker Compose disebut sebagai service. Dengan Docker Compose, Anda bisa menjalankan dan mengelola seluruh service hanya dengan satu perintah.<\/p><p>Tanpa Docker Compose, setiap container harus dikonfigurasi dan dijalankan secara manual melalui Docker CLI. Kalau aplikasi terdiri dari banyak layanan yang saling terhubung, proses ini bisa menjadi cukup rumit dan memakan waktu.<\/p><p>Kalau satu container adalah satu perangkat, Docker Compose bisa dianggap sebagai sistem yang mengatur bagaimana semua perangkat bekerja bersama dalam satu alur. Analoginya seperti cara oven, kulkas, dan pemanggang roti yang dinyalakan bersamaan menggunakan satu sakelar untuk melakukan proses memasak.<\/p><p>Berikut contoh file Docker Compose:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">services:\n  web:\n    build: .\/web  # Membangun image dari Dockerfile di direktori .\/web\n    ports:\n      - \"8000:8000\"  # Memetakan port host 8000 ke port container 8000\n    depends_on:\n      - db     # Menunggu hingga service db dijalankan\n      - redis  # Menunggu hingga service redis dijalankan\n\n  db:\n    image: postgres:15  # Menggunakan image PostgreSQL 15 resmi\n    environment:\n      POSTGRES_USER: myuser       # Mengatur username database\n      POSTGRES_PASSWORD: mypassword  # Mengatur password database\n      POSTGRES_DB: mydb           # Mengatur nama database awal\n    volumes:\n      - db-data:\/var\/lib\/postgresql\/data  # Menyimpan data database menggunakan volume bernama\n\n  redis:\n    image: redis:alpine  # Menggunakan image Redis ringan untuk caching\n\nvolumes:\n  db-data:  # Mendefinisikan volume bernama untuk menyimpan data database<\/pre><p>Untuk menjalankan semua service dalam file <strong>docker-compose.yml<\/strong> di di latar belakang, jalankan perintahnya dengan flag <strong>-d<\/strong> atau mode detached.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker compose up -d<\/pre><p>Docker Compose juga menyediakan berbagai perintah lain untuk mengelola container sepanjang lifecycle aplikasi. Untuk penjelasan lebih lanjut, Anda bisa membaca panduan tentang Docker Compose.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-install-docker\">Cara menginstal Docker<\/h2><p>Proses penginstalan Docker bisa berbeda tergantung pada jenis yang digunakan. Kalau menggunakan Docker Desktop, Anda cukup mendownload paket installer dari website resmi, lalu menginstalnya seperti aplikasi biasa.<\/p><p>Sementara itu, <a href=\"\/id\/tutorial\/cara-install-docker-ubuntu\">Docker CLI bisa diinstal<\/a> melalui perintah di package manager sistem, seperti APT di Ubuntu atau Homebrew di macOS. Untuk langkah yang lebih lengkap, Anda bisa melihat <a href=\"https:\/\/docs.docker.com\/engine\/install\/\" target=\"_blank\" rel=\"noopener\">dokumentasi resmi<\/a> sesuai sistem operasi yang digunakan.<\/p><p>Perlu diingat, Docker CLI tidak menyertakan beberapa fitur tambahan seperti Docker Compose sehingga Anda perlu menginstalnya secara terpisah. Kalau menggunakan layanan <a href=\"\/id\/vps\/docker\">hosting Docker<\/a> dari Hostinger, Anda tidak perlu melakukan proses ini karena fitur Docker Manager sudah mendukung Docker Compose secara langsung.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/hosting-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29630\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><figure class=\"wp-block-image size-large\"><a href=\"\/id\/hosting-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29630\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading\" id=\"h-understanding-basic-docker-commands\">Memahami perintah dasar Docker<\/h3><p>Docker CLI digunakan untuk berinteraksi dengan Docker Engine dan mengelola container. Berikut beberapa perintah dasar Docker yang paling sering digunakan:<\/p><ul class=\"wp-block-list\">\n<li><strong>docker ps -a.<\/strong> Menampilkan semua container, termasuk yang sudah dihentikan.<\/li>\n\n\n\n<li><strong>docker pull &lt;name&gt;:&lt;tag&gt;.<\/strong> Mendownload image dari registry ke mesin lokal.<\/li>\n\n\n\n<li><strong>docker rmi &lt;image&gt;.<\/strong> Menghapus image dari sistem lokal.<\/li>\n\n\n\n<li><strong>docker stop &lt;container&gt;.<\/strong> Menghentikan container yang sedang berjalan dengan aman.<\/li>\n\n\n\n<li><strong>docker rm &lt;container&gt;.<\/strong> Menghapus container.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-how-to-manage-docker-volumes\"><strong>Cara mengelola volume Docker<\/strong> <\/h2><p><strong>Volume<\/strong> adalah mekanisme utama untuk menjaga data tetap tersimpan di Docker. Dengan menggunakan volume, data tetap bisa diakses meskipun container dihapus.<\/p><p>Hal ini penting karena dalam siklus penggunaan container, Anda mungkin perlu menghentikan atau menghapus container untuk keperluan update atau maintenance. Kalau container tersebut menjalankan aplikasi seperti database, menjaga integritas data menjadi hal yang sangat penting.<\/p><p>Docker menyediakan tiga jenis penyimpanan utama:<\/p><ul class=\"wp-block-list\">\n<li><strong>Volume.<\/strong> Data disimpan di area khusus yang dikelola Docker, biasanya berada di direktori <strong>\/var\/lib\/docker\/volumes\/<\/strong> pada sistem host.<\/li>\n\n\n\n<li><strong>Bind mount.<\/strong> Menghubungkan file atau direktori dari host langsung ke container.<\/li>\n\n\n\n<li><strong>tmpfs mount.<\/strong> Menyimpan data di memori host yang akan hilang saat container berhenti.<\/li>\n<\/ul><p>Berikut langkah-langkah untuk membuat dan mengelola volume:<\/p><ol class=\"wp-block-list\">\n<li>Buat volume baru dengan perintah berikut. Perintah ini akan membuat volume bernama <strong>my-database-data<\/strong>.<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker volume create my-database-data<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Jalankan container database dengan flag <strong>-v<\/strong> untuk memetakan volume tersebut ke direktori data internal container. Berikut perintahnya:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d \\\n  --name my-database \\\n  -e MYSQL_ROOT_PASSWORD=securepassword \\\n  -v my-database-data:\/var\/lib\/mysql \\\n  mysql:latest<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Periksa detail volume dan lokasinya pada host dengan menjalankan:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker volume inspect my-database-data<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Untuk menghapus volume yang tidak digunakan dan tidak terkait ke container mana pun sekaligus mengosongkan ruang disk, gunakan perintah berikut:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker volume prune -a<\/pre><p>Selain menggunakan perintah CLI, Anda juga bisa mendefinisikan volume melalui file Docker Compose. Cara ini memudahkan pengelolaan volume, terutama saat Anda menjalankan banyak service.<\/p><p>Sebagai contoh, konfigurasi YAML berikut mencakup langkah-langkah untuk membuat volume dan melakukan mount container seperti pada contoh di atas:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">services:\n\n  my-database:\n\n    image: mysql:latest\n\n    container_name: my-database\n\n    environment:\n      MYSQL_ROOT_PASSWORD: securepassword\n\n    volumes:\n      - my-database-data:\/var\/lib\/mysql\n\nvolumes:\n  my-database-data:<\/pre><h2 class=\"wp-block-heading\" id=\"h-how-to-create-a-docker-network\">Cara membuat jaringan Docker<\/h2><p>Jaringan Docker berfungsi untuk mengatur komunikasi antar container dan dengan sistem eksternal. Secara default, Docker akan menghubungkan container ke jaringan bawaan bernama <strong>bridge network<\/strong>. Jaringan ini memungkinkan container berkomunikasi dengan host, tetapi kurang fleksibel untuk aplikasi dengan banyak service.<\/p><p>Untuk aplikasi multi-service, sebaiknya gunakan user-defined bridge network. Dengan jenis jaringan ini, container bisa saling berkomunikasi menggunakan nama service, sehingga lebih mudah dikelola dan lebih terstruktur. Hal ini mempermudah penemuan layanan, meningkatkan kontrol terhadap cara kontainer saling berinteraksi, dan meminimalkan gangguan antar layanan.<\/p><p>Anda bisa menghubungkan container ke user-defined bridge network dengan menambahkan direktif <strong>networks<\/strong> ke konfigurasi service di file YAML Docker Compose. Berikut contohnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">services:\n\n  my-database:\n\n    image: mysql:latest\n\n    container_name: my-database\n\n    environment:\n      MYSQL_ROOT_PASSWORD: securepassword\n\n    volumes:\n      - my-database-data:\/var\/lib\/mysql\n\n    networks:\n      - my-app-network #create a network<\/pre><p>Selain itu, Anda bisa membuat user-defined bridge network dengan perintah berikut, dengan nama <strong>my-app-network<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker network create my-app-network<\/pre><p>Setelah itu, jalankan container menggunakan Docker CLI dengan flag <strong>&ndash;name <\/strong>untuk menetapkan nama layanan dan <strong>&ndash;network<\/strong> untuk menentukan jaringan yang akan dihubungkan. Berikut contohnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d \\\n  --name my-database \\\n  --network my-app-network \\\n  -e MYSQL_ROOT_PASSWORD=securepassword \\\n  -v my-database-data:\/var\/lib\/mysql \\\n  mysql:latest<\/pre><p>Kalau ingin menambahkan container lain ke network yang sama, cukup jalankan perintah yang sama dengan konfigurasi layanan yang berbeda. Dalam contoh berikut, kita menambahkan flag<strong> -p<\/strong> untuk memetakan <strong>port internal kontainer 80<\/strong> ke <strong>port 8080 <\/strong>pada mesin host agar bisa diakses dari luar.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run -d \\\n  --name my-webapp \\\n  --network my-app-network \\\n  -p 8080:80 \\\n  my-web-app-image:latest<\/pre><h2 class=\"wp-block-heading\" id=\"h-troubleshooting-common-docker-issues\">Mengatasi masalah umum Docker<\/h2><p>Saat bekerja dengan Docker, masalah yang sering muncul biasanya berkaitan dengan struktur berlapisnya, seperti image, container, volume, dan network. Berikut beberapa masalah yang umum terjadi beserta cara mengatasinya.<\/p><h3 class=\"wp-block-heading\" id=\"h-container-exits-immediately\"><strong>Container langsung berhenti<\/strong> <\/h3><p>Container bisa langsung berhenti setelah dijalankan karena proses utama yang didefinisikan melalui <strong>CMD<\/strong> atau <strong>ENTRYPOINT<\/strong> di Dockerfile sudah selesai dijalankan atau mengalami error. Kondisi ini juga bisa terjadi kalau Docker mencoba menjalankan service yang hanya berjalan di latar belakang tanpa mode detached.<\/p><p>Beberapa solusi untuk error ini antara lain:<\/p><ul class=\"wp-block-list\">\n<li><strong>Periksa log<\/strong>. Gunakan perintah <strong>docker logs &lt;nama_container&gt;<\/strong> untuk melihat output aplikasi, termasuk stdout dan stderr. Dari sini, Anda bisa mengetahui penyebab container berhenti atau mengalami crash.<\/li>\n\n\n\n<li><strong>Periksa instruksi di Dockerfile<\/strong>. Pastikan container menjalankan proses yang bersifat jangka panjang dengan memeriksa apakah Dockerfile berisi instruksi <strong>CMD<\/strong> atau <strong>ENTRYPOINT<\/strong>. Misalnya, web server harus tetap berjalan agar bisa melayani request.<\/li>\n\n\n\n<li><strong>Jalankan dalam mode detached<\/strong>. Kalau aplikasinya merupakan service yang berjalan terus-menerus dan ingin dijalankan di latar belakang, pastikan menggunakan flag <strong>-d<\/strong> atau <strong>&ndash;detach<\/strong> saat menjalankan docker run atau docker compose run. flag <strong>-d<\/strong> atau <strong>&ndash;detach<\/strong> saat menjalankan <strong>docker run<\/strong> atau <strong>docker compose run<\/strong>.<\/li>\n<\/ul><h3 class=\"wp-block-heading\" id=\"h-image-layer-caching-issues\"><strong>Masalah caching layer pada image<\/strong> <\/h3><p>Kalau perubahan pada Dockerfile seperti update versi package tidak terlihat diterapkan, kemungkinan Docker masih menggunakan cache dari layer sebelumnya. Mekanisme caching ini memang mempercepat proses build, tapi bisa menyebabkan perubahan tidak ikut diterapkan.<\/p><p>Walau meningkatkan efisiensi, perubahan pada layer awal Dockerfile bisa menimbulkan masalah, karena instruksi setelahnya menjadi tidak valid.<\/p><p>Cara paling sederhana untuk mengatasi masalah ini adalah memaksa build ulang sepenuhnya dan mengabaikan cache layer. Lakukan dengan menambahkan opsi <strong>&ndash;no-cache <\/strong>saat memulai proses build, seperti perintah berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker build --no-cache -t my-app:latest .<\/pre><p>Saat menginstal package di Dockerfile, sebaiknya sertakan perintah yang memastikan daftar package selalu diperbarui. Pada sistem berbasis Debian, Anda bisa menggabungkan <strong>apt-get update<\/strong> dan <strong><strong>apt-get install -y &ndash;no-install-recommend<\/strong><\/strong> dalam satu instruksi <strong>RUN<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends<\/pre><h3 class=\"wp-block-heading\" id=\"h-registry-authentication-failure\">Kegagalan autentikasi registry<\/h3><p>Kalau muncul error seperti &ldquo;<strong>denied: requested access to the resource is denied<\/strong>&rdquo; saat melakukan push image ke registry seperti Docker Hub, biasanya <strong>Docker CLI<\/strong> belum terautentikasi dengan registry tersebut.<\/p><p>Untuk mengatasinya, Anda perlu login terlebih dahulu ke registry. Berikut langkah-langkahnya:<\/p><ol class=\"wp-block-list\">\n<li>Masuk ke registry menggunakan perintah berikut. Ganti <strong>my-registry.example.com<\/strong> dengan alamat registry yang Anda gunakan. Kalau ingin mengupload image ke Docker Hub, bagian alamat registry bisa diabaikan.<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker login my-registry.example.com<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Masukkan username dan password saat diminta.<\/li>\n\n\n\n<li>Beri tag image dengan format yang sesuai, yaitu mencakup registry host, repository, dan tag, sebelum melakukan push:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker tag my-local-image:latest my-registry.example.com\/my-repo\/my-local-image:latest<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Kirim image ke registry dengan perintah berikut:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker push my-registry.example.com\/my-repo\/my-local-image:latest<\/pre><h2 class=\"wp-block-heading\" id=\"h-what-are-the-next-steps-to-master-docker\">Setelah ini, apa langkah berikutnya untuk belajar Docker?<\/h2><p>Kalau ingin benar-benar menguasai Docker dan menggunakannya untuk kebutuhan produksi, Anda perlu mempelajari lebih dari sekadar penggunaan dasar, seperti menjalankan satu container atau mencoba beberapa perintah sederhana. Langkah berikutnya adalah mulai memahami cara mengelola aplikasi yang lebih kompleks, terutama yang terdiri dari banyak service dan membutuhkan ketersediaan tinggi.<\/p><p>Selain Docker Compose, Anda juga perlu mempelajari tool orkestrasi seperti <strong>Docker Swarm<\/strong> atau <strong>Kubernetes<\/strong>. Tool ini digunakan untuk mengelola dan melakukan scaling container di banyak mesin dalam satu cluster, sehingga aplikasi tetap stabil saat beban meningkat.<\/p><p>Selain itu, pemahaman tentang sistem jaringan Docker juga penting. Salah satu yang perlu dipelajari adalah <strong>Overlay Network Driver<\/strong> yang digunakan dalam mode Docker Swarm untuk menghubungkan beberapa host dalam satu cluster. Menghubungkan banyak mesin menggunakan jaringan bawaan Docker bisa cukup rumit dan dilakukan secara manual, sedangkan overlay network membuat proses komunikasi antar host menjadi lebih sederhana dan terstruktur.<\/p><p>Terakhir, Anda bisa mulai mengeksplorasi berbagai use case Docker agar lebih memahami bagaimana containerization digunakan dalam praktik, baik untuk pengembangan maupun deployment aplikasi. Selamat mencoba dan semoga berhasil!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker adalah platform open-source yang dirancang untuk menyederhanakan proses pengembangan, distribusi, dan menjalankan aplikasi. Proses pengiriman software menjadi lebih praktis berkat containerization (kontainerisasi), yaitu teknologi yang mengemas aplikasi beserta dependensinya ke dalam unit terisolasi yang disebut container. Dengan metode ini, software bisa berjalan secara konsisten di berbagai lingkungan. Secara umum, Docker memiliki beberapa komponen utama, [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/id\/tutorial\/panduan-dan-tutorial-docker\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":47984,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Tutorial Docker: panduan lengkap untuk menjalankan container","rank_math_description":"Docker memudahkan Anda mengembangkan, mendistribusikan, dan menjalankan aplikasi menggunakan container. Yuk, pelajari tutorial Docker lengkap di sini!","rank_math_focus_keyword":"tutorial docker","footnotes":""},"categories":[5096],"tags":[],"class_list":["post-47987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/47987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/comments?post=47987"}],"version-history":[{"count":9,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/47987\/revisions"}],"predecessor-version":[{"id":48055,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/47987\/revisions\/48055"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media\/47984"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media?parent=47987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/categories?post=47987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/tags?post=47987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}