tutorial

Docker Basic

Docker Architecture

arsitektur docker
  • Docker Client : interface interaksi pengguna dengan docker. interface ini dapat berupa docker CLI atau docker desktop (GUI)
  • Docker Daemon (Docker Engine) : komponen inti yang mengelola container docker di host. Docker Daemon bertanggung jawab untuk membangun, menjalankan, dan memantau kontainer berdasarkan perintah yang diterima dari Docker Client. Docker Daemon juga berinteraksi dengan Docker Registries untuk mengunduh dan mengunggah Docker Images.
  • Docker Image : template statis (read-only) yang berisi paket aplikasi dan semua dependensinya yg sudah terinstall di dalamnya dan siap dijalankan (ex: nginx, mongodb, mysql, or custom app). Docker image ini digunakan sebagai basis untuk menciptakan kontainer.
  • Docker Container : instance runtime dari Docker Images atau instance yg dijalankan berdasarkan blueprint docker images. Kontainer menjalankan aplikasi dalam lingkungan terisolasi yang memastikan konsistensi di berbagai lingkungan, mulai dari pengembangan hingga produksi. Kontainer dapat dijalankan, dihentikan, dipindahkan, dan dihapus sesuai kebutuhan tanpa mempengaruhi sistem host atau kontainer lainnya.
  • Docker Registry : Docker Registries adalah repositori tempat Docker Images disimpan dan dikelola. Docker Hub adalah registry publik yang paling umum digunakan, tetapi Anda juga dapat menggunakan registry privat seperti Docker Registry atau layanan registry dari penyedia cloud seperti AWS ECR, Google Container Registry, dan lainnya. Registries memungkinkan pengembang untuk mengunduh image yang sudah ada atau mengunggah image mereka sendiri untuk dibagikan.
  • Docker Compose : Docker Compose adalah alat yang digunakan untuk mendefinisikan dan menjalankan aplikasi multi-kontainer Docker. Dengan Docker Compose, Anda dapat mengatur berbagai layanan yang diperlukan oleh aplikasi Anda dalam sebuah file konfigurasi YAML (docker-compose.yml). Ini memudahkan pengelolaan dan orkestrasi berbagai kontainer yang saling berinteraksi.
  • Docker Volume : Digunakan untuk menyimpan data yang persisten dan dapat dibagikan antar kontainer. Volume memungkinkan data tetap ada meskipun kontainer dihentikan atau dihapus.
  • Docker Networking : Mengatur komunikasi antar kontainer dan antara kontainer dengan jaringan eksternal. Docker menyediakan berbagai opsi jaringan seperti bridge, host, overlay, dan lainnya untuk memenuhi kebutuhan komunikasi aplikasi Anda.

Docker Command

docker pull

Perintah untuk mengunduh Docker image dari registry seperti Docker Hub (hub.docker.com).

docker pull <image_name>
docker pull nginx

Docker Hub adalah layanan registry publik yang menyimpan berbagai jenis Docker image. Di sini, Anda bisa menemukan image resmi dari berbagai aplikasi dan layanan, serta image dari komunitas. Anda juga bisa membuat akun Anda sendiri untuk menyimpan dan membagikan Docker image.

Tidak hanya Docker Hub, ada juga registry pribadi yang bisa Anda gunakan dalam organisasi atau untuk keperluan pribadi. Registry ini berguna jika Anda ingin menyimpan Docker image dalam lingkungan yang lebih terkontrol.

untuk mencari image yang diinginkan di docker hub, cukup masukkan nama aplikasinya di kotak pencarian, kemudian akan muncul beberapa list image, pilih yang officiall (resmi).

ketika dilihat detailnya akan diberikan juga cara unduh dan pemakainnya

docker run

Perintah untuk membuat dan menjalankan kontainer dari sebuah Docker Image.

docker run --name <nama_container> -d -p <port_ext>:<port_int> <image_name>
docker run --name my_nginx -d -p 8000:80 nginx

#keterangan
-d : berjalan dibackground, jika tanpa ini maka berjalan di foreground dan  lognya akan muncul di terminal
-p 8000:80 : port 8000 (dari luar/local computer) akan diakrahkan ke port 80 (di dalam container) 

setelah menjalankan code diatas maka docker container dengan layanan nginx berhasil dibuat, jika dicek

docker ps

Perintah untuk melihat daftar kontainer yang sedang berjalan.

untuk melihat semua container baik yang aktif maupun yang tidak aktif tambahkan -a

docker exec

Perintah untuk masuk ke dalam container terminal

docker exec -it <container name or id> bash
docker exec -it fast-api bash

docker images

Perintah docker images digunakan untuk menampilkan daftar semua Docker images yang ada di sistem lokal Anda. Perintah ini memberikan informasi detail tentang setiap image, termasuk nama, tag, ukuran, dan waktu pembuatan.

docker stop

Perintah untuk menghentikan (tidak aktif) kontainer yang sedang berjalan.

docker stop <CONTAINER_ID or container_name>
docker stop my_nginx

docker rm

perintah untuk menghapus docker container

docker rm <CONTAINER_ID or container_name>
docker rm my_nginx

docker system df

perintah yang disediakan oleh Docker untuk membantu pengguna memantau dan mengelola penggunaan ruang disk yang digunakan oleh berbagai objek Docker di sistem Anda. df dalam konteks ini merupakan singkatan dari “disk filesystem”, yang mirip dengan perintah df di sistem UNIX yang menampilkan penggunaan disk.

docker builder prune

Perintah docker builder prune digunakan untuk menghapus cache build Docker yang tidak lagi digunakan. Cache build adalah file sementara yang dihasilkan selama proses membangun Docker images, seperti intermediate layers. Cache ini dapat menghabiskan ruang disk jika tidak dikelola dengan baik.

docker rmi

perintah untuk menghapus docker image.

  • pastikan container yang mengacu ke docker image sudah benar-benar terhapus
docker rmi <IMAGE_NAME:tag or IMAGE_ID>
docker rmi nginx:latest
docker rmi bbc3f2ef2a7c

menghapus semua images

docker rmi $(docker images -q)

menghapus “Dangling Images” (Image Tanpa Nama/Tag)

docker image prune

docker tag

Perintah docker tag digunakan untuk memberi nama atau tag pada sebuah Docker image. Tag ini berfungsi untuk mengidentifikasi image secara unik, terutama saat Anda bekerja dengan beberapa versi image atau saat mengunggahnya ke Docker Registry (seperti Docker Hub).

Mengapa Tag Penting?

  1. Versi Image: Tag membantu membedakan versi yang berbeda dari image, misalnya v1.0, v1.1, atau latest.
  2. Pengelolaan Image di Registry: Sebelum mengunggah (push) image ke registry, Anda harus memberikan nama dan tag yang sesuai dengan struktur registry.
  3. Kemudahan Penggunaan: Tag mempermudah untuk merujuk ke image tertentu saat menjalankan kontainer

rename tag

 docker tag nginx:latest nginx:v1.0.0

rename docker image name

docker tag nginx:latest nginx_123:v1.0.0

note:

  • jika tidak ada perubahan di docker layer nya, maka image id nya tetap dan tidak akan membebani penyimpanan meskipun ada banyak versi atau name yg berbeda dari base docker image tersebut dalam kasus ini docker nginx

Related Articles

Back to top button
Index