Lewati ke konten utama

Menjalankan Docker Image sebagai Container: Panduan Praktis untuk Pemula

Tutorial ini mengajarkan Anda cara menjalankan Docker image dengan yakin menggunakan docker run, dengan contoh jelas, kiat praktis, dan saran pemecahan masalah.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jika Anda bertanya-tanya bagaimana cara menjalankan Docker image, Anda tidak sendirian. Baik Anda baru saja menarik image dari Docker Hub atau membangunnya sendiri, menjalankannya adalah langkah penting yang menghidupkan aplikasi Anda.

Tutorial ini adalah panduan ramah pemula untuk perintah docker run dan seterusnya. Anda akan mempelajari:

  • Apa sebenarnya Docker image dan container itu.
  • Cara menjalankan sebuah image dengan berbagai opsi.
  • Dan cara menghentikan, menghapus, serta memecahkan masalah container secara andal.

Pada akhirnya, Anda akan percaya diri meluncurkan container Anda sendiri dan memahami apa yang terjadi di balik layar.

Memahami Docker Image dan Container

Sebelum masuk ke contoh perintah, mari pahami Docker image dan container dengan istilah yang sederhana.

Jika Anda sudah familier dengan istilah ini, silakan lewati ke bagian berikutnya!

Apa itu Docker image?

Docker image adalah cetak biru yang tidak dapat diubah (immutable) untuk aplikasi Anda. Ia mendefinisikan semua yang dibutuhkan container: kode, library, environment, dan konfigurasi. Setelah Anda memiliki image, Anda dapat menggunakannya untuk menjalankan satu container atau seratus. Hasilnya akan konsisten setiap kali.

Lalu, dari mana image berasal? Dockerfile yang membangunnya. Dockerfile adalah tempat Anda menentukan base image yang digunakan, dependensi apa yang perlu diinstal, dan bagaimana aplikasi Anda harus dijalankan.

Setelah Dockerfile siap, Anda menjalankan perintah docker build. Perintah ini mengikuti langkah-langkah di file tersebut dan mengubahnya menjadi image yang dapat digunakan kembali.

Apa itu Docker container?

Docker container adalah versi aktif dari Docker image. Ini memungkinkan aplikasi Anda berjalan dalam lingkungan terisolasi, memastikan perilaku yang konsisten terlepas dari sistem host.

Ini mengikuti pendekatan “build once, run anywhere”, sehingga Anda tidak perlu menyiapkan environment secara manual setiap kali.

Image vs container

Tabel berikut membandingkan image dan container secara berdampingan:

Image

Container 

Image adalah paket standar yang mencakup semua file, binary, library, dan konfigurasi untuk menjalankan container.

Instance runtime dari sebuah image.

Image bersifat immutable. Artinya tidak dapat berubah sampai dibangun ulang.

Container bersifat mutable. Anda dapat memodifikasinya saat berjalan, menginstal paket baru, atau mengubah file konfigurasi.

Dockerfile (kumpulan instruksi untuk membangun image) membuat image.

Sebuah image membuat container.

Komputer Anda menyimpan file image.

Container berjalan di memori Anda.

Jika Anda benar-benar baru dalam kontainerisasi, kursus Introduction to Docker kami memandu Anda melalui konsep inti dengan contoh langsung.

Perintah docker run

Saat Anda mengeksekusi perintah docker run, Anda memberi tahu Docker untuk menyalakan container baru berdasarkan sebuah image.

Secara sederhana, Anda meluncurkan sebuah program di dalam lingkungan terisolasi. Program itu bisa apa saja, dari aplikasi web sederhana hingga layanan penuh dengan banyak proses.

Sintaks dasar

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • [OPTIONS] - Flag tambahan untuk menyesuaikan cara container berjalan
  • IMAGE - Nama Docker image
  • [COMMAND] - (Opsional) Menimpa perintah default di dalam image.
  • [ARG...]- (Opsional) Argumen.

Flag dan opsi umum

  • -d: Mode detached: menjalankan container di latar belakang
  • -p: Pemetaan port: Untuk mengakses sebuah layanan (seperti API atau aplikasi web) dari browser Anda, Anda perlu mengekspos port. Contoh: -p 3000:3000 memetakan port 3000 di mesin Anda ke port 3000 di container.
  • --name: Docker memberikan nama default ke container, tetapi Anda bisa menggunakan flag ini untuk memberinya nama baru.
  • -v: Anda menggunakan ini untuk memisahkan data dari container itu sendiri, memastikan data tetap ada meskipun container dihentikan atau dihapus.
  • --rm: Saat container berhenti, flag ini akan menghapusnya secara otomatis.
  • -e: Gunakan untuk meneruskan kata sandi database atau kunci API tanpa menanamkannya langsung di aplikasi Anda.

Menjalankan container interaktif vs detached

Docker menjalankan container dengan dua cara: mode interaktif (-it) dan mode detached (-d). Setiap mode memiliki kegunaan khusus tergantung tujuan Anda.

  • -it: Mode interaktif: Jika Anda ingin bekerja langsung di dalam container menggunakan terminal, gunakan flag -it. Ini menempatkan container dalam mode interaktif, sehingga Anda dapat mengetik perintah, melihat output, dan bekerja secara real-time.
    • -i: Menjaga input tetap terbuka agar Anda bisa mengetik perintah ke dalam container
    • -t: Memberikan antarmuka mirip terminal di dalam container
  • -d: Mode detached: Menjalankan container di latar belakang, sehingga terminal Anda bebas untuk tugas lainnya.

Simpan perintah kunci dan praktik terbaik di ujung jari Anda dengan Docker for Data Science Cheat Sheet kami.

Menarik dan Menjalankan Docker Image

Sekarang setelah Anda mengetahui sintaks perintah docker run, bagian ini akan menunjukkan cara membuat image kustom dan menjalankannya.

Menggunakan image dari Docker Hub

Docker Hub seperti perpustakaan online untuk image container. Anda dapat mengambil image yang sudah dibuat atau mengunggah milik Anda untuk dibagikan kepada orang lain. Ini mendukung repositori publik dan privat, sehingga Anda bisa berbagi image secara terbuka dengan komunitas atau menerapkan kontrol akses untuk tim internal Anda.

Menjalankan image kustom 

Untuk menjalankan Docker image, Anda terlebih dahulu perlu membangunnya menggunakan Dockerfile. Lalu, Anda dapat menjalankannya secara lokal atau mendorongnya ke Docker Hub untuk dibagikan.

Jadi, pertama mari buat Dockerfile. Berikut contohnya:

# Use official Python base image
FROM python:3.11-slim
# Set working directory in the container
WORKDIR /app
# Copy requirements file and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the app code
COPY . .
EXPOSE 5000
# Set default command
CMD ["python", "app.py"]

Apa arti Dockerfile di atas?

  • FROM python:3.11-slim: base image dengan Python versi 3.11
  • WORKDIR /app: Menetapkan /app sebagai direktori kerja di dalam container.
  • COPY requirements.txt . : memindahkan semua dependensi dari mesin lokal ke direktori aplikasi container.
  • RUN pip install --no-cache-dir -r requirements.txt: menginstal dependensi di requirements.txt.
  • COPY . . : menyalin kode direktori kerja saat ini (aplikasi, file konfigurasi, dan lainnya) ke direktori aplikasi container.
  • CMD ["python", "app.py"]: menjalankan app.py saat memulai container dari image ini.

Langkah 1. Build Dockerfile 

Mari lihat apa yang terjadi saat Anda membangun Dockerfile ini.

  • Jalankan perintah berikut:
docker build -t my-python-app .

Catatan: Agar perintah ini berfungsi, Anda harus sudah menyiapkan Docker di sistem Anda; panduan ini membantu Anda melakukannya.

Gambar menunjukkan hasil eksekusi docker build -t my-python-app di terminal.

Berikut yang terjadi di balik layar saat Anda mengeksekusi perintah build:

  1. Docker membaca Dockerfile
  2. Base image Python diambil dari Docker Hub
  3. Direktori kerja ditetapkan ke /app.
  4. requirements.txt disalin ke dalam container.
  5. Dependensi diinstal menggunakan pip install.
  6. Sisa kode Anda disalin ke /app.
  7. Image final diberi tag sebagai my-python-app.

Langkah 2: Jalankan Dockerfile

Setelah image Anda dibangun, Anda dapat mengeksekusinya menggunakan:

docker run -p 5000:5000 my-python-app

Berikut yang terjadi saat Anda menjalankannya: 

  • Container baru dari image kustom Anda, my-python-app, dibuat.
  • Port 5000 di mesin Anda dipetakan ke port 5000 di container (-p 5000:5000).
  • Perintah CMD ["python", "app.py"] dijalankan dan mengeksekusi aplikasi.
  • Container berjalan di latar belakang karena opsi -d (mode detached).

Pada tahap ini, Anda dapat membuka http://localhost:5000 di browser Anda, dan Anda akan melihat sesuatu seperti berikut, yang berarti aplikasi Anda sedang berjalan:

Tangkapan layar browser di http://localhost:5000 menampilkan pesan "Hello from Docker!".

Jika Anda bekerja di bidang machine learning, beberapa Docker image terbaik untuk ML dan AI ini dapat mempercepat penyiapan environment Anda.

Menjalankan image dengan konfigurasi

Untuk beberapa aplikasi, Anda mungkin perlu menjalankan image dengan konfigurasi tertentu. Berikut dua contoh umum.

Mempersistenkan data

Container menyimpan data secara sementara. Setelah Anda menghapusnya, datanya hilang. Volume adalah cara untuk menyimpan data di luar container sehingga tetap ada meskipun container dihapus atau dimulai ulang.

Untuk me-mount volume, Anda perlu menjalankan perintah seperti berikut:

docker run -v my-volume:/app/data my-image

Data yang ditulis ke /app/data disimpan di volume bahkan setelah container dihapus.

Meneruskan variabel lingkungan

Variabel lingkungan meneruskan pengaturan konfigurasi ke Docker container saat runtime. Ini menyesuaikan container Docker Anda tanpa memodifikasi Docker image Anda.

Ada dua cara untuk meneruskan variabel lingkungan:

  1. Anda dapat meneruskan variabel lingkungan menggunakan parameter -e. Berikut contoh perintah:
docker run -e ENV=production -e DEBUG=False my-image
  1. Anda dapat membuat file .env berisi semua variabel lingkungan dan meneruskannya ke perintah. Berikut contohnya:
docker run --env-file .env my-image

Contoh file .env:

ENV=staging
DEBUG=True
SECRET_KEY=mysecret

Mengelola Container yang Berjalan

Setelah sebuah container berjalan, Anda dapat melihat, menghentikan, dan mengaksesnya. Mari lihat caranya.

Melihat container aktif

Untuk menampilkan semua Docker container aktif yang berjalan di sistem Anda, jalankan perintah docker ps atau docker container ls. Perintah ini menampilkan ID container, image, perintah, port, status, dan detail lainnya.

docker ps
# or
docker container ls

Untuk menyertakan semua container — tidak hanya yang sedang berjalan — seperti yang sudah keluar (exited) atau dibuat tetapi belum dimulai, gunakan flag -a:

docker ps -a

Untuk menampilkan hanya container yang paling baru dibuat, gunakan flag -l (last):

docker ps -l

Jika Anda ingin melihat semua container diurutkan berdasarkan waktu pembuatan, dengan yang terbaru di atas, jalankan:

docker ps -a --sort=created

Menghentikan dan menghapus container

Untuk menghentikan container tertentu yang sedang berjalan, gunakan perintah docker stop diikuti ID atau nama container:

docker stop <container_id_or_name>

Untuk menghentikan semua container yang berjalan, gunakan:

docker stop $(docker ps -q)
  • $(docker ps -q) mengembalikan daftar semua ID container yang berjalan.

Setelah container dihentikan, Anda dapat menghapusnya menggunakan:

docker rm <container_id_or_name>

Untuk menghapus semua container yang berhenti, jalankan:

docker container prune

Untuk melangkah lebih jauh dan menghapus container, volume, network, dan image yang tidak terpakai, lihat panduan Docker prune.

Mengakses log dan shell container

  • docker logs - Perintah docker logs mengambil log secara batch yang ada pada saat eksekusi.
  • docker exec - docker exec memungkinkan Anda menjalankan perintah baru di dalam container yang sedang berjalan tanpa menghentikan atau memulainya ulang. Anggap saja seperti membuka terminal baru di dalam container — sehingga Anda bisa mengecek, menjalankan skrip, memeriksa log, atau debug.
  • docker attach - docker attach menghubungkan terminal Anda langsung ke proses utama container yang sedang berjalan. Ini berarti Anda dapat melihat output langsung container (log, prompt, dll.) dan bahkan berinteraksi jika prosesnya menerima input.

Pemecahan Masalah Umum

Solusi sederhana untuk masalah umum. Berikut beberapa error umum saat menjalankan Docker image dan cara menanganinya.

Error 1: “Error response from daemon: pull access denied for alpine-python, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied.”

  • Artinya: Docker mencoba menarik sebuah image, dalam hal ini image alpine-python dari Docker Hub, tetapi imagenya tidak ada atau privat, dan Anda belum terautentikasi.
  • Cara memperbaiki:
    • Periksa kembali nama image dan tag di Docker Hub.
    • Jika itu image privat, jalankan docker login untuk autentikasi.
    • Pastikan image ada jika Anda menarik dari registry kustom.

Error 2: “No such image found: <image-name>:<tag>”

  • Artinya: Anda mencoba menjalankan atau memberi tag image secara lokal, tetapi image (atau tag yang ditentukan) tidak tersedia di sistem Anda.
  • Cara memperbaiki:
    • Gunakan docker images untuk memeriksa image yang tersedia.
    • Tarik image secara eksplisit:
docker pull <image-name>:<tag>

Error 3: “manifest for <image>:<tag> not found: manifest unknown: The named manifest is not known to the registry.”

  • Artinya: Error ini kemungkinan terjadi saat image atau tag yang ditentukan tidak ada.
  • Kemungkinan perbaikan: Tips ini seharusnya memperbaiki sebagian besar error umum:
    • Verifikasi nama image dan tag yang benar.
    • Rujuk ke tag image di Docker Hub atau registry kustom Anda.
    • Gunakan docker pull <image>:<tag> untuk mengambil versi yang valid.
    • Jika membangun secara lokal, gunakan Dockerfile yang benar dan bangun image dengan:
docker build -t <image>:<tag> .

Konflik port dan kegagalan bind

Konflik port terjadi ketika beberapa container atau sebuah container dan aplikasi lain mencoba mengakses port yang sama.

  • Cara memperbaiki:
    • Gunakan host port yang berbeda saat menjalankan container Anda:
docker run -p 8081:80 <image>
  • Hentikan layanan yang saat ini menggunakan port tersebut.
  • Identifikasi apa yang menggunakan sebuah port (misalnya, 8080) dengan:
lsof -i :8080

Kesimpulan 

Menjalankan Docker image adalah salah satu langkah paling penting dan memberdayakan dalam menggunakan container, baik Anda menyalakan server web sederhana atau menerapkan aplikasi yang kompleks. Dengan beberapa perintah seperti docker run, docker ps, dan docker stop, kini Anda dibekali untuk meluncurkan, mengelola, dan memecahkan masalah container dengan percaya diri.

Jika siap melangkah lebih jauh, cobalah membangun image Anda sendiri dengan Dockerfile, jelajahi flag lanjutan docker run, atau pelajari cara mengelola banyak container dengan Docker Compose.

Lihat kursus-kursus berikut untuk melanjutkan perjalanan Docker Anda:

FAQs

Bisakah saya menjalankan beberapa container dari Docker image yang sama?

Ya, Anda dapat menjalankan beberapa container dari image yang sama. Setiap container terisolasi dan dapat memiliki pengaturan, port, serta variabel lingkungannya sendiri.

Bagaimana cara meneruskan secret atau kunci API dengan aman ke Docker container?

Gunakan flag -e untuk menetapkan variabel lingkungan atau gunakan file .env dan --env-file untuk meneruskan secret saat runtime tanpa menanamkannya langsung di kode.

Bagaimana cara menjalankan Docker image di latar belakang?

Gunakan flag -d dengan docker run untuk memulai container dalam mode detached, sehingga terminal tetap tersedia untuk perintah lainnya.

Apa perbedaan antara docker exec dan docker attach?

 docker exec membuka sesi shell baru di dalam container, sedangkan docker attach terhubung ke proses utama container dan output langsungnya.

Mengapa saya mendapat 'pull access denied' saat menjalankan image?

Ini biasanya berarti image bersifat privat atau salah eja. Periksa nama, tag, dan pastikan Anda sudah masuk ke Docker Hub dengan docker login.

Bagaimana cara mempersistenkan data di container setelah berhenti?

Gunakan flag -v untuk me-mount volume, memastikan data disimpan di luar container dan tetap utuh bahkan setelah container dihapus.

Apa cara terbaik menjalankan container untuk keperluan pengembangan?

Gunakan flag -it untuk mode interaktif, bersama dengan mounting volume dan variabel lingkungan untuk meniru environment pengembangan lokal.

Bagaimana saya dapat mengetahui port mana yang konflik di mesin saya?

Gunakan lsof -i :<port> untuk mengidentifikasi proses mana yang menggunakan port tertentu, lalu hentikan proses tersebut atau gunakan host port yang berbeda untuk container Anda.

Bagaimana saya dapat melihat log dari Docker container yang berjalan?

Gunakan perintah docker logs <container_id> untuk mengambil dan meninjau log dari aliran standar output dan error container.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana adalah penulis lepas di bidang teknologi dengan gelar sarjana Ilmu Komputer. Menulis tentang berbagai topik, termasuk data science, komputasi awan, pengembangan, pemrograman, keamanan, dan banyak lainnya adalah hal yang alami baginya. Ia menyukai sastra klasik dan menjelajahi destinasi baru.

Topik
Docker

Pelajari lebih lanjut tentang Docker dengan kursus-kursus ini!

Kursus

Pengantar Docker

4 jam
52.3K
Dapatkan pengenalan tentang Docker dan temukan pentingnya dalam kotak alat profesional data. Pelajari tentang kontainer Docker, gambar, dan lainnya.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya