Selamat datang di Tutorial Docker Lengkap dan Terbaru. Dalam panduan ini, Anda akan mempelajari semua yang perlu Anda ketahui tentang Docker, mulai dari dasar hingga teknik lanjutan. Respect Dockers sebagai alat yang sangat berguna dalam dunia pengembangan perangkat lunak, panduan ini dirancang untuk membantu Anda memahami dan menguasai Docker dengan cara yang mudah dan efektif. Mari kita mulai perjalanan belajar Docker Anda!

Sejarah Docker

1. Awal Mula (2013)

Docker pertama kali diluncurkan pada Maret 2013 oleh Solomon Hykes dan timnya di perusahaan dotCloud, sebuah perusahaan platform as a service (PaaS). Docker pada awalnya merupakan proyek open-source yang dirancang untuk menyederhanakan proses penyebaran aplikasi dengan mengemas aplikasi ke dalam wadah (container). Konsep wadah ini memungkinkan aplikasi untuk berjalan di berbagai lingkungan tanpa masalah kompatibilitas.

2. Pertumbuhan dan Adopsi (2014)

Docker dengan cepat mendapatkan perhatian komunitas pengembang dan perusahaan teknologi. Pada Juni 2014, Docker mengumumkan versi 1.0 dari platformnya. Versi ini membawa banyak peningkatan dan stabilitas, yang mendorong adopsi lebih luas di industri. Docker juga memperkenalkan Docker Hub, repositori pusat untuk berbagi dan mengelola gambar Docker.

3. Ekosistem dan Integrasi (2015-2016)

Docker mulai membangun ekosistem yang lebih besar dengan integrasi ke alat dan layanan lain. Docker Inc. meluncurkan Docker Swarm untuk orkestrasi wadah dan Docker Compose untuk mengelola aplikasi multi-wadah. Selama periode ini, Docker mendapatkan dukungan dari banyak perusahaan besar dan menjadi salah satu teknologi utama dalam DevOps dan kontainerisasi.

4. Keterlibatan Komunitas dan Perusahaan (2017-2018)

Docker terus berkembang dengan peluncuran Docker Enterprise Edition, yang menawarkan fitur tambahan untuk keamanan, manajemen, dan integrasi perusahaan. Docker juga aktif dalam membangun komunitas dan bekerja sama dengan berbagai perusahaan untuk mendorong adopsi teknologi kontainer.

5. Docker dan Kubernetes (2019-2020)

Docker menghadapi persaingan dari Kubernetes, sistem orkestrasi kontainer yang berkembang pesat. Meskipun Kubernetes menjadi pilihan utama untuk manajemen kontainer di banyak organisasi, Docker tetap menjadi alat populer untuk pembangunan dan distribusi kontainer. Docker terus berfokus pada pengembangan alat dan fitur untuk mendukung ekosistem kontainer.

6. Pengembangan Terbaru (2021-2024)

Docker terus berinovasi dengan memperkenalkan fitur baru dan memperbaiki alat-alatnya. Docker Desktop menjadi lebih canggih dengan dukungan untuk berbagai platform, termasuk WSL 2 di Windows. Docker juga memperkuat integrasi dengan layanan cloud dan alat pengembangan modern, menjaga relevansi dan kebermanfaatannya dalam pengembangan perangkat lunak kontemporer.

Docker telah menjadi salah satu alat yang sangat penting dalam pengembangan perangkat lunak modern, mempermudah proses pengemasan, penyebaran, dan manajemen aplikasi. Seiring dengan perkembangan teknologi kontainer, Docker tetap menjadi pionir dan inovator dalam industri perangkat lunak.

Apa Itu Docker?

Docker adalah platform yang memungkinkan pengembang untuk membangun, mengirimkan, dan menjalankan aplikasi dalam lingkungan yang konsisten dan terisolasi yang dikenal sebagai “wadah” (containers). Wadah Docker memungkinkan aplikasi berjalan dengan cara yang sama di berbagai lingkungan, dari mesin pengembangan lokal hingga server produksi, tanpa masalah kompatibilitas.

1. Wadah (Containers)

container adalah unit standar perangkat lunak yang mengemas kode, runtime, alat sistem, pustaka, dan pengaturan yang diperlukan untuk menjalankan aplikasi. container Docker memisahkan aplikasi dan dependensinya dari sistem operasi host, membuat aplikasi lebih portabel dan mudah dipindahkan.

2. Docker Images

Docker Images adalah blueprints dari containers. Ini adalah file statis yang berisi semua yang diperlukan untuk menjalankan aplikasi: code, libraries, settings, dan dependensi lainnya. Gambar dapat dibagikan melalui Docker Hub atau registry pribadi.

3. Docker Hub

Docker Hub adalah repositori publik yang memungkinkan pengguna untuk menyimpan dan berbagi docker images. Anda dapat menemukan berbagai imagessiap pakai di Docker Hub, yang dapat digunakan sebagai dasar untuk aplikasi Anda.

4. Docker Compose

Docker Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi multi-wadah. Dengan menggunakan file konfigurasi docker-compose.yml, Anda dapat mengatur layanan, jaringan, dan volume untuk aplikasi yang terdiri dari beberapa wadah.

5. Docker Swarm dan Kubernetes

Docker Swarm dan Kubernetes adalah alat untuk orkestrasi wadah, yang memungkinkan Anda untuk mengelola dan mengatur kumpulan wadah secara otomatis. Mereka membantu dalam penyebaran, penskalaan, dan pemantauan aplikasi yang berjalan dalam wadah.

Baca juga:  System Administrator Adalah Pahlawan Tak Terlihat di Balik Layar

6. Keuntungan Docker

  • Portabilitas: Aplikasi dalam wadah Docker dapat dijalankan di berbagai lingkungan tanpa perlu penyesuaian.
  • Konsistensi: Wadah memastikan bahwa aplikasi berjalan dengan cara yang sama di semua lingkungan, dari pengembangan hingga produksi.
  • Isolasi: Setiap wadah berjalan terpisah, sehingga aplikasi dan dependensinya tidak saling mengganggu.
  • Efisiensi: Wadah menggunakan sumber daya sistem lebih efisien dibandingkan dengan mesin virtual tradisional.

Docker mengubah cara aplikasi dibangun, disebarkan, dan dikelola, menawarkan solusi yang lebih fleksibel dan efisien untuk pengembangan perangkat lunak.

Kenapa Harus Docker?

Docker menawarkan berbagai keuntungan yang membuatnya menjadi pilihan populer untuk pengembangan dan pengelolaan aplikasi. Berikut adalah beberapa alasan mengapa Docker sangat bermanfaat:

1. Portabilitas Aplikasi

Docker memungkinkan Anda untuk mengemas aplikasi dan semua dependensinya dalam satu wadah yang terisolasi. Ini berarti aplikasi dapat berjalan di berbagai lingkungan tanpa perlu penyesuaian. Baik di komputer pengembang, server QA, atau data center produksi, aplikasi akan berfungsi dengan cara yang sama.

2. Konsistensi dan Isolasi

Dengan Docker, Anda memastikan bahwa aplikasi berjalan dalam lingkungan yang konsisten dan terisolasi. Ini mengurangi risiko konflik dengan aplikasi lain dan menghindari masalah yang disebabkan oleh perbedaan konfigurasi antara lingkungan pengembangan dan produksi.

3. Efisiensi Sumber Daya

Docker menggunakan teknologi wadah yang lebih ringan dibandingkan dengan mesin virtual tradisional. Wadah berbagi kernel sistem operasi host dan tidak memerlukan overhead tambahan, sehingga lebih efisien dalam hal penggunaan sumber daya seperti memori dan CPU.

4. Kemudahan Pengelolaan

Docker menyediakan alat seperti Docker Compose untuk mengelola aplikasi multi-wadah dengan mudah. Anda dapat mendefinisikan dan mengelola layanan, jaringan, dan volume dalam file konfigurasi tunggal, menyederhanakan proses pengelolaan aplikasi kompleks.

5. Kecepatan Pengembangan dan Penyebaran

Docker mempermudah dan mempercepat proses pengembangan dan penyebaran aplikasi. Dengan Docker, Anda dapat dengan cepat membuat dan menguji gambar aplikasi, dan menyebarkannya ke berbagai lingkungan tanpa khawatir tentang konfigurasi dan kompatibilitas.

6. Komunitas dan Ekosistem yang Kuat

Docker memiliki komunitas yang aktif dan ekosistem yang luas. Anda dapat memanfaatkan berbagai gambar siap pakai dari Docker Hub dan berkontribusi pada proyek open-source. Dukungan komunitas yang luas juga mempermudah mendapatkan bantuan dan sumber daya saat menghadapi masalah.

Dengan keuntungan-keuntungan tersebut, Docker membantu pengembang membangun, menyebarkan, dan mengelola aplikasi dengan cara yang lebih efisien dan konsisten.

Prasyarat Instalasi

Sebelum mencoba menginstal Docker, pastikan mesin host Anda memenuhi prasyarat berikut:

  • Linux OS 64-bit
  • Kernel minimal Versi 3.10 atau lebih tinggi. Disarankan untuk menggunakan versi kernel terbaru yang tersedia untuk platform Anda.
  • IPTABLES versi 1.4 atau lebih tinggi
  • GIT versi 1.7 atau lebih tinggi
  • ps, biasanya disediakan oleh paket procps atau paket serupa.
  • Xz Utils versi 4.9 atau lebih tinggi
  • A properly mounted cgroupfs hierarchy; a single, all-encompassing cgroup mount point is not sufficient.

Linux
Kernel versi 3.10.x adalah persyaratan minimum untuk Docker.

MacOS
Diperlukan versi 10.8 “Mountain Lion” atau yang lebih baru.

Instalasi

Linux

Untuk instalasi Docker di Linux, Anda bisa menggunakan skrip instalasi otomatis yang disediakan oleh Docker:

Jika Anda tidak ingin menjalankan skrip shell dari sumber yang tidak dikenal, silakan ikuti instruksi instalasi resmi untuk distribusi Linux Anda.

Jika Anda baru memulai dengan Docker, kami sarankan untuk mengikuti panduan docker yang disediakan di situs Docker.

Mac OS X

Untuk pengguna Mac, unduh dan instal Docker Desktop. Jika mengalami masalah, Anda dapat melihat instruksi instalasi.

Docker sebelumnya menggunakan boot2docker, namun saat ini Anda disarankan untuk menggunakan Docker Desktop. Jika Anda memiliki instance Docker yang sudah ada dan ingin beralih, lihat petunjuk tentang cara migrasi.

Setelah Anda menginstal Docker Desktop, Anda dapat langsung menjalankan kontainer dengan menggunakan terminal:

Jika Anda baru memulai, ikuti panduan docker untuk mac.

Windows

Untuk pengguna Windows, unduh dan instal Docker Desktop for Windows. Pastikan bahwa Hyper-V dan WSL 2 telah diaktifkan pada sistem Anda. Untuk petunjuk lengkap, lihat instruksi instalasi.

Baca juga:  System Administrator Adalah Pahlawan Tak Terlihat di Balik Layar

Setelah instalasi selesai, Anda dapat memverifikasi bahwa Docker berjalan dengan baik dengan menjalankan perintah:

Untuk panduan lebih lanjut, kunjungi tutorial Docker untuk Windows.

Dengan mengikuti panduan ini, Anda akan memiliki Docker terinstal dan siap digunakan di sistem operasi pilihan Anda.

Containers

container Docker adalah unit isolasi dasar untuk menjalankan aplikasi, mirip dengan thread dalam proses. Kontainer memberikan lingkungan yang konsisten dan dapat dipindahkan antar sistem.

Lifecycle (Siklus Hidup Kontainer)

Perintah Keterangan
docker create Membuat kontainer tetapi tidak menjalankannya.
docker run Membuat dan menjalankan kontainer dalam satu langkah.
docker stop menghentikan kontainer yang sedang berjalan.
docker start Memulai kembali kontainer yang telah dihentikan.
docker restart Mengulang kontainer.
docker rm Menghapus kontainer.
docker kill Mengirim sinyal SIGKILL ke kontainer untuk menghentikannya secara paksa.
docker attach Menghubungkan ke kontainer yang sedang berjalan.
docker wait Menunggu hingga kontainer berhenti.

Menjalankan Perintah di Kontainer

Tujuan Perintah
Untuk membuka shell interaktif dalam kontainer docker exec -t -i <mycontainer> <myshell>
Untuk membuka terminal dari image baru docker run -t -i <myimage> <myshell>
Untuk memetakan direktori dari host ke dalam kontainer docker run -v $HOSTDIR:$DOCKERDIR <image>
Untuk menghapus kontainer otomatis setelah berhenti docker run --rm <image>
Untuk menghapus kontainer beserta volume docker rm -v <mycontainer>
Untuk mengintegrasikan kontainer dengan proses manajer host Jalankan daemon dengan opsi -r=false, kemudian gunakan docker start -a

Executing Commands (Menjalankan Perintah)

Tujuan Perintah
Menjalankan shell interaktif di dalam kontainer docker exec -t -i <mycontainer> <myshell>
Menjalankan perintah di dalam kontainer tanpa membuka shell docker exec <mycontainer> <command>
Menjalankan perintah saat membuat dan menjalankan kontainer baru docker run <options> <image> <command>

Volumes (Volume)

Fungsi Perintah
Memetakan direktori dari host ke dalam kontainer docker run -v $HOSTDIR:$DOCKERDIR <image>
Membuat volume baru docker volume create <volume_name>
Menggunakan volume dengan kontainer docker run -v <volume_name>:$DOCKERDIR <image>
Menampilkan daftar volume docker volume ls
Menghapus volume docker volume rm <volume_name>

Exposing Ports (Mengekspos Port)

Fungsi Perintah
Mengekspos port kontainer ke port di host docker run -p <host_port>:<container_port> <image>
Mengecek port terbuka setelah kontainer berjalan docker ps
Mengekspos port di Docker Compose

Info

Tujuan Perintah
Menampilkan kontainer yang sedang berjalan docker ps
Mendapatkan log dari kontainer docker logs
Melihat semua informasi tentang kontainer (termasuk alamat IP) docker inspect
Mendapatkan event dari kontainer docker events
Menampilkan port publik kontainer docker port
Menampilkan proses yang berjalan di kontainer docker top
Menampilkan statistik penggunaan sumber daya kontainer docker stats
Menampilkan file yang diubah dalam sistem file kontainer docker diff
Menampilkan kontainer yang sedang berjalan dan yang sudah berhenti docker ps -a

Import / Export

Tujuan Perintah
Menyalin file atau folder antara kontainer dan sistem file lokal docker cp
Mengubah sistem file kontainer menjadi arsip tarball dan mengirimkannya ke STDOUT docker export

Executing Commands

Tujuan Perintah
Menjalankan perintah di dalam kontainer docker exec
Untuk masuk ke kontainer yang sedang berjalan dan membuka shell baru docker exec -it foo /bin/bash

Docker Images

Docker Images adalah template untuk kontainer Docker.

Lifecycle

Perintah Keterangan
docker images Menampilkan semua images docker.
docker import Membuat images docker dari file tarball.
docker build Membuat images docker dari Dockerfile.
docker commit Membuat images docker dari sebuah kontainer.
docker rmi Menghapus images docker.
docker load Memuat images docker dari arsip tar sebagai STDIN, termasuk images dan tag (sejak versi 0.7).
docker save Menyimpan images docker ke dalam aliran arsip tar ke STDOUT dengan semua lapisan induk, tag, dan versi (sejak versi 0.7).

Info

Perintah Deskripsi
docker history Menampilkan riwayat dari docker images.
docker tag Memberikan tag pada docker images dengan nama tertentu (baik lokal atau di registry).

Registry & Repository

Repository adalah hosted atau kumpulan docker images yang ditandai (tagged) dan di-host yang bersama-sama membentuk sistem file untuk sebuah kontainer.

Registry adalah server yang menyimpan repository dan menyediakan HTTP API untuk mengelola pengunggahan dan pengunduhan repository.

Docker.com memiliki index untuk registry pusat yang berisi banyak repository. Namun, registry Docker pusat tidak melakukan verifikasi docker images dengan baik dan sebaiknya dihindari jika Anda khawatir tentang keamanan.

Perintah Deskripsi
docker login Masuk ke registry.
docker search Mencari images di registry.
docker pull Menarik images dari registry ke mesin lokal.
docker push Mengunggah images dari mesin lokal ke registry.

Menjalankan Registry Lokal

Implementasi Registry memiliki gambar resmi untuk pengaturan dasar yang dapat diluncurkan dengan docker run -p 5000:5000 registry. Perlu dicatat bahwa instalasi ini tidak memiliki kontrol otorisasi. Anda dapat menggunakan opsi -P -p 127.0.0.1:5000:5000 untuk membatasi koneksi hanya ke localhost. Untuk mengunggah ke repository ini, beri tag gambar dengan repositoryHostName:5000/imageName lalu unggah tag ini.

Dockerfile

Dockerfile adalah file yang digunakan untuk mengatur cara pembuatan kontainer Docker. Ketika Anda menjalankan docker build dengan Dockerfile, Docker akan membuat kontainer sesuai dengan pengaturan di file tersebut. Menggunakan Dockerfile lebih baik daripada menggunakan docker commit untuk membuat kontainer.

Tips Panduan Docker

berikut ini adalah tips singkat tutorial docker singkat agar anda dapat bekerja lebih cepat

Tips Perintah
Last Ids

Commit with command (needs Dockerfile)
Get IP address

Get port mapping
Find containers by regular expression
Get Environment Settings
Kill running containers
Delete old containers
Delete stopped containers
Delete dangling images
Delete all images
Show image dependencies
Slimming down Docker containers
  • Cleaning APT

  • Flatten an image

  • For backup



Monitor system resource utilization for running containers