Bekerja dengan Docker Image
Image adalah fondasi setiap container. Di bagian ini, kita akan melihat cara membuat, mengelola, dan memeriksa Docker image menggunakan perintah umumnya.
docker build
Perintah docker build adalah salah satu fitur Docker yang paling sering digunakan. Meskipun merupakan bagian dari ekosistem yang lebih luas untuk mendukung use case lanjutan, kita akan fokus pada cara menggunakannya untuk membangun image dari Dockerfile sederhana.
Dockerfile adalah file teks biasa (tanpa ekstensi) yang berisi instruksi langkah demi langkah yang digunakan Docker untuk membangun image. Berikut cara membuatnya:
- Di direktori root aplikasi Anda, buat file bernama
Dockerfiledengan isi berikut:
# syntax=docker/dockerfile:1
FROM node:lts-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
Dockerfile ini dimulai dengan image dasar yang ringan yang menyertakan Node.js dan Yarn. File ini menyalin kode sumber aplikasi Anda ke dalam image, memasang dependensi, dan mendefinisikan cara memulai aplikasi.
- Sekarang, bangun image menggunakan perintah berikut:
docker build -t getting-started.
Flag -t memungkinkan Anda memberi tag pada image. Dalam hal ini, kita menamainya getting-started. Tanda . di akhir memberi tahu Docker untuk mencari Dockerfile di direktori saat ini.
docker images
Perintah docker images menampilkan semua image tingkat atas Anda, repositorinya, tag, dan ukurannya. Anda juga dapat menggunakan aliasnya:
docker image listdocker image ls
Sintaksnya: docker image ls [OPTIONS] [REPOSITORY[:TAG]]
Perintah ini mendukung beberapa opsi. Misalnya, untuk menampilkan semua image, termasuk yang intermediate, Anda dapat menambahkan flag -a atau --all seperti ini: docker images -a.
docker rmi <image>
Perintah docker rmi <image> menghapus satu atau lebih image dari sistem Anda. Jika suatu image memiliki beberapa tag, menjalankan perintah ini dengan tag tertentu hanya akan menghapus tag tersebut. Namun jika tag tersebut satu-satunya yang terkait dengan image, maka baik tag maupun imagenya akan dihapus.
Anda juga dapat menggunakan salah satu alias berikut:
docker image removedocker image rm
Sintaksnya: docker image rm [OPTIONS] IMAGE [IMAGE...]
Jika Anda perlu menghapus image yang masih digunakan oleh container yang berjalan, Anda harus memaksanya dengan menambahkan opsi -f atau --force.
Manajemen Container Docker
Kita sering harus mengelola container — memulai, menghentikan, memeriksa, atau menghapusnya saat aplikasi berkembang. Jadi, saya akan memandu Anda melalui perintah Docker yang paling berguna untuk menangani container dalam alur kerja harian.
docker exec <container> <command>
Perintah docker exec memungkinkan Anda menjalankan perintah di dalam container yang sedang berjalan tanpa me-restart-nya. Ini sangat berguna untuk debugging atau memeriksa sesuatu secara manual di dalam container. Anda juga dapat menggunakan aliasnya: docker container exec.
Perintah ini hanya berfungsi jika proses utama container (PID 1) sedang berjalan. Ini tidak otomatis dijalankan ulang jika container di-restart.
Sintaksnya: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Ada beberapa flag opsional yang dapat Anda gunakan. Misalnya, --privileged memberikan izin yang diperluas pada perintah di dalam container. Untuk daftar lengkap opsi, lihat dokumentasi resmi.
Berikut contoh menjalankan perintah pada container:
docker exec -d mycontainer touch /tmp/execWorks
Perintah touch membuat file baru /tmp/execWorks di dalam container mycontainer yang sedang berjalan, di latar belakang.
docker logs <container>
Perintah docker logs memungkinkan Anda melihat log dari container tertentu dan menampilkan semua yang dicetak ke standard output dan error saat dieksekusi. Anda juga dapat menggunakan aliasnya: docker container logs
Sintaksnya: docker container logs [OPTIONS] CONTAINER
Ada sejumlah opsi berguna yang dapat Anda tambahkan. Misalnya:
--detailsmenampilkan atribut tambahan seperti variabel lingkungan dan label.--untilmemungkinkan Anda mengambil log hingga titik waktu tertentu.docker logs -f --until=2s testmengikuti keluaran log untuk containertestdan berhenti setelah menampilkan dua detik terakhir log.
Berikut semua opsi yang dapat kita gunakan dengan docker logs:

Opsi untuk docker log <container>. Sumber: Dokumentasi Docker
docker rm <container>
Perintah docker rm <container> menghapus satu atau lebih container dari sistem Anda. Anda juga dapat menggunakan aliasnya:
docker container removedocker container rm
Sintaksnya: docker container rm [OPTIONS] CONTAINER [CONTAINER...]
Perintah ini memiliki beberapa flag opsional yang dapat Anda gunakan. Berikut beberapa di antaranya:

Opsi untuk docker rm <container>. Sumber: Dokumentasi Docker
Sebagai contoh, Anda dapat menggunakan docker rm /redis untuk menghapus container yang diidentifikasi oleh tautan /redis. Namun, perhatikan bahwa perintah ini hanya menghapus container yang sedang berjalan.
Jika Anda ingin menghapus container yang berhenti, Anda perlu menggunakan docker container prune. Untuk menjaga lingkungan tetap bersih, pelajari cara menghapus sumber daya Docker yang tidak terpakai dengan aman melalui tutorial Docker prune ini.
docker restart <container>
Perintah docker restart <container> menghentikan lalu memulai ulang satu atau lebih container. Anda juga dapat menggunakan aliasnya: docker container restart.
Sintaksnya: docker restart [OPTIONS] CONTAINER [CONTAINER...]
Perintah restart memiliki beberapa opsi berguna untuk menyesuaikan restart container. Di bawah ini adalah kedua opsi, beserta contohnya.
|
Opsi |
Deskripsi |
Contoh |
|
-s, --signal |
Sinyal yang dikirim ke container. |
|
|
-t, --timeout |
Detik menunggu sebelum mematikan container. |
|
> Untuk praktik langsung, jelajahi ide proyek Docker ini yang berkisar dari tingkat pemula hingga mahir.
Jaringan Docker
Jaringan container memungkinkan komunikasi antarcontainer dan beban kerja eksternal. Secara default, container memiliki jaringan yang diaktifkan dan dapat membuat koneksi keluar, tetapi mereka tidak secara otomatis mengetahui jenis jaringan yang digunakan atau beban kerja lain apa yang terhubung.
Kecuali Anda menggunakan driver jaringan none (yang menonaktifkan jaringan), container dapat berinteraksi dengan elemen jaringan seperti alamat IP, gateway, dan DNS.
Mari jelajahi beberapa perintah jaringan Docker umum yang dapat Anda gunakan.
docker network ls
Perintah docker network ls menampilkan semua jaringan yang dikenal oleh Docker Engine, termasuk di beberapa host dalam sebuah klaster. Aliasnya adalah: docker network list.
- Berikut sintaksnya:
docker network ls [OPTIONS]
Anda dapat menggunakan beberapa opsi, seperti terlihat pada gambar di bawah:
Secara default, perintah ini menampilkan setiap jaringan:
- ID
- Nama
- Driver
- Cakupan
Anda dapat menggunakan flag untuk menyesuaikan keluaran. Misalnya, flag --no-trunc menampilkan ID jaringan lengkap alih-alih yang dipersingkat. Begini cara menggunakan perintah ini:
docker network ls --no-trunc
docker network create <network-name>
Perintah docker network create membuat jaringan Docker baru. Secara default, ia menggunakan driver bridge kecuali Anda menentukan yang lain menggunakan flag --driver (atau -d).
Docker mendukung driver jaringan bawaan seperti:
bridgeuntuk jaringan single-host.overlayuntuk jaringan multi-host dalam mode Swarm.
Anda juga dapat menggunakan driver pihak ketiga atau kustom jika diperlukan.
- Berikut sintaks dasarnya:
docker network create [OPTIONS] NETWORK
Perintah ini menawarkan banyak opsi untuk berbagai tujuan. Lihat dokumentasi resmi mereka untuk melihat daftar lengkap opsi.
Berikut contoh membuat jaringan bridge:
docker network create -d bridge my-bridge-network
Jaringan bridge terbatas pada satu Docker Engine sehingga tidak akan menghubungkan container di host yang berbeda.
Setelah mode Swarm diaktifkan, Anda dapat membuat jaringan yang menjangkau beberapa host Docker:
docker network create --scope=swarm --attachable -d overlay my-multihost-network
> Ingin tahu bagaimana perbandingan Docker dan Kubernetes? Ulasan ini tentang Kubernetes vs Docker membahas perbedaan utama dan use case-nya.
Volume Docker
Volume Docker digunakan untuk menyimpan data yang perlu dipertahankan, bahkan ketika container berhenti atau dihapus. Anda dapat membuatnya secara eksplisit atau membiarkan Docker membuatnya secara otomatis saat memulai container.
Volume disimpan di sistem host namun terisolasi dari file inti host. Volume di-mount ke dalam container dengan cara yang mirip dengan bind mount tetapi dengan portabilitas dan keamanan yang lebih baik.
Mari jelajahi beberapa perintah volume Docker yang relevan:
docker volume ls
Perintah docker volume ls menampilkan semua volume yang diketahui Docker. Anda juga dapat menggunakan aliasnya: docker volume list.
- Sintaksnya:
docker volume ls [OPTIONS]
Perintah ini mendukung beberapa flag opsional untuk membantu Anda memfilter atau memformat keluaran — berikut daftarnya:

Opsi untuk perintah docker volume ls. Sumber: Dokumentasi Docker
docker volume create <volume-name>
Perintah docker volume create membuat volume baru untuk menyimpan data persisten. Jika Anda tidak memberikan nama, Docker akan membuatnya secara otomatis.
Membuat volume adalah langkah umum saat Anda ingin data bertahan melampaui masa hidup satu container.
- Berikut sintaksnya:
docker volume create [OPTIONS] [VOLUME_NAME]
Mari lihat contoh membuat volume lalu mengonfigurasi container untuk menggunakannya:
docker volume create hello
docker run -d -v hello:/world busybox ls /world
Dalam contoh ini, dibuat volume bernama hello. Kemudian, volume tersebut di-mount ke dalam container pada path /world. Ini memungkinkan container menulis atau membaca data dari volume tersebut.
Beberapa container dapat menggunakan volume yang sama, yang berguna jika satu container perlu menulis data sementara yang lain membacanya.
Catatan: Nama volume harus unik di seluruh driver. Anda tidak dapat menggunakan nama volume yang sama pada dua driver penyimpanan yang berbeda.
Perintah Docker Compose
Docker Compose memudahkan pengelolaan aplikasi multi-container menggunakan sebuah file YAML sederhana. Ini mendukung berbagai lingkungan seperti pengembangan, pengujian, staging, produksi, dan CI. Dengan satu perintah, Anda dapat mengontrol layanan, menyiapkan jaringan, dan mengelola volume — semuanya di satu tempat.
Mari jelajahi beberapa perintah compose yang umum:
docker-compose up
Perintah docker compose up membangun, (menciptakan ulang), memulai, dan melampirkan ke container untuk sebuah layanan. Jika container belum berjalan, perintah ini juga secara otomatis memulai layanan yang ditautkan.
- Berikut sintaksnya:
docker compose up [OPTIONS] [SERVICE...]
Secara default, perintah ini menggabungkan keluaran semua container. Jika Anda ingin fokus pada layanan tertentu, Anda dapat:
- Menggunakan flag
--attachuntuk melampirkan ke layanan tertentu - Gunakan flag
--no-attachuntuk mengecualikan yang lain
Sebagai contoh, docker compose up --no-attach <service-name> memulai semua layanan kecuali yang Anda kecualikan dari log.
Saat perintah selesai, container juga berhenti. Untuk membuatnya tetap berjalan di latar belakang, gunakan flag --detach:
docker compose up --detach
Sebelum menjalankan perintah ini, pastikan Anda sudah berpindah direktori (cd) ke lokasi file docker-compose.yml Anda.
docker-compose down
Perintah docker compose down menghentikan container serta menghapus container, image, jaringan, dan volume yang dibuat oleh docker compose up.
- Sintaksnya:
docker compose down [OPTIONS] [SERVICES]
Anda dapat menggunakan berbagai opsi, termasuk berikut ini:

Opsi untuk perintah docker compose down. Sumber: Dokumentasi Docker.
Secara default, perintah ini menghapus hal-hal berikut:
- Container untuk layanan yang didefinisikan dalam file Compose.
- Jaringan yang didefinisikan di bagian networks pada file Compose.
- Jaringan default, jika digunakan.
Berikut ini tidak dihapus secara default:
- Jaringan dan volume yang didefinisikan sebagai eksternal.
- Volume anonim, yaitu volume yang tidak memiliki nama.
Volume anonim tidak di-mount secara otomatis saat Anda menjalankan docker compose up lagi karena tidak memiliki nama. Jika Anda memerlukan penyimpanan data persisten, menggunakan volume bernama atau bind mount lebih baik.
Praktik Terbaik untuk Menggunakan Perintah Docker
Docker adalah cara yang andal untuk membangun, mendistribusikan, dan menjalankan aplikasi dalam container. Namun agar menggunakannya dengan baik serta memastikan penyiapan Anda efisien dan mudah diskalakan, Anda harus mengikuti beberapa praktik terbaik.
Gunakan volume Docker untuk data persisten
Secara default, file container disimpan di lapisan dapat-tulis yang akan hilang saat container dihapus! Lapisan ini unik untuk setiap container dan tidak mudah diakses. Docker menggunakan berbagai jenis mount untuk mempertahankan data, salah satunya adalah volume, dikelola oleh Docker daemon dan disimpan di host.
Volume memungkinkan kita untuk:
- Menyimpan data bahkan setelah container dihapus.
- Menyimpan data yang kritis terhadap performa dengan kecepatan setingkat host.
- Mengelola penyimpanan dengan mudah melalui Docker.
Volume ideal untuk data jangka panjang atau ketika beberapa container perlu berbagi akses. Perlu diingat, jika Anda perlu mengakses file langsung dari host, bind mount mungkin lebih cocok, karena volume sepenuhnya dikelola oleh Docker.
Otomatisasi dengan Docker Compose
Mengelola banyak container secara manual bisa menjadi melelahkan. Docker Compose menyederhanakannya dengan memungkinkan Anda mendefinisikan semuanya dalam satu file YAML sehingga Anda dapat fokus membangun.
Inilah mengapa ini layak dijadikan praktik terbaik:
- Satu perintah sederhana: Mulai, hentikan, skala, atau bangun ulang layanan Anda sekaligus.
- Konsistensi untuk semua: Baik Anda bekerja di pengembangan, pengujian, atau produksi, Compose menjaga keselarasan lingkungan sehingga Anda tidak terjebak dengan masalah “berjalan di mesin saya”.
- Jaringan bawaan: Compose membuat jaringan bersama sehingga layanan Anda dapat berkomunikasi dengan mudah menggunakan nama layanan alih-alih IP.
- Skalabilitas mudah: Anda dapat dengan cepat meningkatkan atau menurunkan skala layanan dengan flag
--scale, yang bagus untuk menguji bagaimana aplikasi menangani beban berbeda. - Konfigurasi jelas dan kolaboratif: Seluruh penyiapan Anda, termasuk container, jaringan, dan volume, berada dalam kontrol versi dan mudah dibaca.
Kesimpulan
Docker mungkin terasa banyak di awal, tetapi setelah Anda menguasai perintah intinya, ini membuka banyak kemungkinan. Mulai dari menjalankan container pertama hingga mengelola jaringan, volume, dan layanan, kini Anda lebih siap untuk membangun dan menjalankan aplikasi terkontainerisasi dengan percaya diri.
Dan jika Anda ingin terus belajar, berikut beberapa sumber yang bagus untuk dijelajahi selanjutnya:
- Containerization and Virtualization Concepts – kursus yang tepat untuk membangun dasar konseptual Anda.
- Introduction to Docker – kursus ramah pemula untuk memulai.
- Intermediate Docker – kursus saat Anda siap melangkah lebih dalam.
- Containerization and Virtualization with Docker and Kubernetes – skill track untuk memperluas ke Kubernetes dan orkestrasi dunia nyata.
FAQ
Apa saja perintah Docker yang paling sering digunakan?
Beberapa perintah Docker yang paling umum meliputi docker run, docker ps, docker build, docker pull, dan docker-compose up.
Apa perbedaan volume Docker dengan bind mount?
Volume Docker dikelola oleh Docker dan ideal untuk portabilitas serta persistensi data, sedangkan bind mount menautkan ke path file tertentu pada sistem host.
Bisakah saya menjalankan beberapa container dengan satu perintah?
Ya, menggunakan docker-compose up dengan file docker-compose.yml memungkinkan Anda menjalankan beberapa layanan secara bersamaan.
Apa perbedaan docker start dan docker run?
docker run membuat dan memulai container baru, sedangkan docker start memulai ulang container yang sudah ada dan berhenti.
Bagaimana cara menampilkan semua container yang berhenti?
Gunakan docker ps -a untuk melihat semua container, termasuk yang sudah berhenti.
Apa tujuan perintah docker exec?
Ini memungkinkan Anda menjalankan perintah di dalam container yang sedang berjalan, sering digunakan untuk debugging atau pemeriksaan manual.
Apakah Docker hanya untuk sistem berbasis Linux?
Tidak, Docker juga mendukung macOS dan Windows, menggunakan mesin virtual ringan untuk mengaktifkan kontainerisasi.
Apa yang dilakukan perintah docker-compose down?
Perintah ini menghentikan dan menghapus container, jaringan, dan volume yang dibuat oleh docker-compose up.
Bagaimana cara menghapus dangling Docker image?
Jalankan docker image prune untuk membersihkan image yang tidak terpakai dan mengosongkan ruang disk.
Apakah Docker dapat digunakan di lingkungan produksi?
Tentu. Docker banyak digunakan di produksi untuk menerapkan aplikasi yang dapat diskalakan dan dapat direproduksi di lingkungan cloud maupun on-prem.
Saya seorang ahli strategi konten yang senang menyederhanakan topik kompleks. Saya telah membantu perusahaan seperti Splunk, Hackernoon, dan Tiiny Host membuat konten yang menarik dan informatif untuk audiens mereka.


Docker telah menjadi alat andalan bagi developer dan profesional data yang perlu membangun, berbagi, dan menjalankan aplikasi secara konsisten di berbagai lingkungan. Baik Anda menyiapkan container untuk pengembangan lokal maupun menerapkan microservices di produksi, menguasai perintah Docker sangatlah penting.
Dalam panduan ini, saya akan membahas 18 perintah Docker penting—mencakup image, container, jaringan, volume, dan Compose—yang akan meningkatkan alur kerja Anda dan membuat pekerjaan dengan Docker lebih mulus serta efisien.
Apa itu Docker?
Docker adalah platform untuk mengembangkan, mendistribusikan, dan menjalankan aplikasi. Ini memungkinkan Anda memisahkan aplikasi dari infrastruktur dasar, sehingga pengiriman perangkat lunak menjadi lebih cepat dan penyiapan Anda dikelola dengan cara yang sama seperti Anda mengelola aplikasi.
Docker menjalankan aplikasi di lingkungan terisolasi menggunakan paket ringan yang disebut container, yang mencakup semua yang dibutuhkan aplikasi untuk berjalan, seperti dependensi dan instalasi, sehingga membantu menghemat sumber daya sistem. Kita dapat dengan mudah berbagi container dengan rekan tim, menjalankan beberapa sekaligus, dan mengelolanya semua menggunakan alat dan platform Docker.
Kita dapat menggunakan Docker untuk banyak hal, termasuk:
Saat menggunakan Docker, kita bekerja dengan berbagai objek Docker seperti image, container, network, plugin, dan volume. Ini membentuk blok bangunan dari penyiapan Docker. Di balik layar, Docker menggunakan fitur kernel Linux untuk mewujudkan semua ini. Kita berinteraksi dengannya menggunakan perintah sederhana di terminal, dan setiap perintah Docker dimulai dengan
docker.> Jika Anda baru memulai, kursus Introduction to Docker memberikan dasar praktis untuk mempelajari dasar-dasar kontainerisasi.
Perintah Dasar Docker
Setelah membahas apa itu Docker dan cara kerjanya, mari kita lihat beberapa perintah yang paling umum. Ini akan membantu Anda membangun, menjalankan, dan mengelola container dalam alur kerja harian.
docker --version dan docker info
Dalam perintah Docker, apa pun yang dimulai dengan
--disebut flag.Sebagai contoh,
--versionadalah flag yang menampilkan versi Docker CLI yang Anda gunakan. Anda juga dapat menggunakandocker version(tanpa flag) untuk mendapatkan info versi terperinci untuk semua komponen Docker.Keluaran dibagi menjadi dua bagian:
Anda juga dapat memformat keluaran ini menggunakan flag
--formatdengan templat kustom.Perintah
docker infomemberikan gambaran lengkap tentang penyiapan Docker Anda. Ini sama dengan menjalankandocker system info, hanya namanya lebih pendek. Anda akan melihat detail seperti versi kernel, jumlah container dan image, serta detail tingkat sistem lainnya.Bergantung pada driver penyimpanan Anda, Anda juga dapat melihat info seperti nama pool dan file data. Seperti
docker version, Anda dapat memformat keluarannya menggunakan--formatatau-f.docker pull <image>
Perintah pull mengunduh image Docker dari registry, biasanya Docker Hub, pustaka publik berisi image siap pakai yang dapat Anda gunakan tanpa menyiapkan apa pun sendiri. Anda dapat menjalankannya sebagai
docker pull <image>ataudocker pull, dan keduanya melakukan hal yang sama.docker image pull [OPTIONS] NAME[:TAG|@DIGEST]Jika Anda tidak menentukan tag, Docker akan menggunakan
:latestsecara default. Misalnya:docker image pull debianmengambil imagedebian:latest.Anda juga dapat menambahkan opsi setelah perintah untuk menyesuaikan cara image diunduh, seperti membatasi bandwidth atau melewati verifikasi image. Gambar di bawah menunjukkan semua opsi yang tersedia dan fungsinya.
Opsi untuk perintah docker pull. Sumber: Dokumentasi Docker
docker run <image>
Perintah
docker run <image>membuat dan memulai container baru dari image tertentu, artinya menjalankan image tersebut di container baru. Ini adalah bentuk singkat daridocker container run, dan keduanya berfungsi sama.docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]Jika Anda sudah pernah menjalankan container dan ingin memulainya kembali dengan semua perubahan sebelumnya, gunakan:
docker start <container>.Perintah run memiliki banyak opsi untuk menyesuaikan cara container dijalankan. Kita akan membahas beberapa yang umum dengan contoh:
Flag
Contoh perintah
Deskripsi
-- namedocker run --name test -d nginx:alpineIdentifier kustom yang ditentukan untuk container bernama test menggunakan image
nginx:alpine.-w,--workdirdocker run -w /path/to/dir/ -i -t ubuntu pwdMenjalankan perintah di dalam direktori yang ditentukan, dalam contoh ini,
/path/to/dir/--piddocker run --rm -it --pid=host alpineSecara default, semua container memiliki namespace PID yang diaktifkan, memberikan pemisahan proses.
Contoh ini menjalankan container alpine dengan opsi
--pid = host.--cidfiledocker run --cidfile /tmp/docker_test.cid ubuntu echo "test"Ini membuat container dan mencetak test ke konsol
Flag
cidfilemembuat Docker mencoba membuat file baru dan menuliskan ID container ke dalamnya.docker stop <container> dan docker start <container>:
Perintah
docker start <container>memulai satu atau lebih container yang sedang berhenti. Misalnya, padadocker start my_container,my_containeradalah nama container yang ingin kita mulai. Kita juga dapat menggunakan aliasnya:docker container start.docker container start [OPTIONS] CONTAINER [CONTAINER...]Demikian pula,
docker stopmenghentikan satu atau lebih container yang sedang berjalan. Misalnya, padadocker stop my_container,my_containeradalah nama container yang sedang berjalan.Ini juga memiliki alias:
docker container stop.docker container stop [OPTIONS] CONTAINER [CONTAINER...]Seperti
start, perintahstopmemiliki opsi untuk menyesuaikan bagaimana container dihentikan. Berikut beberapa yang bermanfaat:Opsi untuk
docker stop. Sumber: Dokumentasi Docker