Lewati ke konten utama

MinIO Docker: Panduan Setup untuk Penyimpanan Objek Kompatibel S3

Jalankan MinIO dengan Docker untuk mendapatkan penyimpanan objek kompatibel S3 untuk pengembangan lokal, mencakup setup, volume persisten, troubleshooting, dan kapan menggunakan mode terdistribusi.
· 15 mnt Baca

Jelajahi bersama AI

Apakah Anda membutuhkan penyimpanan objek untuk pengembangan tetapi tidak ingin menyiapkan dan membayar AWS S3?

MinIO memberi Anda penyimpanan yang kompatibel dengan S3 yang dapat berjalan di mana saja — di laptop, VM, atau kluster Kubernetes. Ini bersifat open-source, yang berarti netral vendor, dan Anda tidak akan mendapat tagihan mengejutkan di akhir bulan. Dikombinasikan dengan Docker, menjalankan MinIO menjadi lebih mudah karena Anda bisa menyalakan server penyimpanan dalam hitungan detik tanpa memasang apa pun langsung di mesin Anda.

Kontainer Docker menjaga MinIO terisolasi dari sistem Anda sekaligus memberi kendali penuh atas konfigurasi dan persistensi data. Anda dapat menguji API S3 secara lokal, meniru setup penyimpanan produksi, atau menjalankan penyimpanan objek ringan untuk proyek kecil.

Dalam artikel ini, saya akan menunjukkan cara menjalankan MinIO dengan Docker, memverifikasi bahwa semuanya berfungsi dengan benar, dan mengonfigurasi opsi setup yang paling umum.

Jika Anda benar-benar baru dengan Docker, luangkan satu sore di hari Sabtu untuk menguasai dasar-dasarnya — kursus Introduction to Docker dari DataCamp siap membantu.

Prasyarat

Anda memerlukan tiga hal untuk menjalankan MinIO dengan Docker.

Docker terpasang dan berjalan di mesin Anda. Anda bisa memverifikasi dengan menjalankan docker --version di terminal. Jika Anda mendapat nomor versi, Anda siap lanjut.

Pemahaman dasar tentang perintah Docker. Anda sebaiknya tahu cara memulai dan menghentikan kontainer, melihat log, dan bekerja dengan image Docker. Jika Anda pernah menjalankan docker run atau bekerja dengan Docker Compose sebelumnya, Anda akan baik-baik saja.

Direktori lokal untuk penyimpanan persisten. MinIO membutuhkan lokasi untuk menyimpan data di luar kontainer. Buat direktori kosong di mesin host — seperti ~/minio/data sudah memadai.

Itu saja. Daftarnya singkat dan sederhana, tetapi pastikan semuanya terpenuhi sebelum melangkah lebih jauh.

Cara Menjalankan MinIO dengan Docker (Setup Single-Node)

Setup MinIO single-node menjalankan satu instance MinIO dalam kontainer Docker dan menyimpan semua data Anda di satu lokasi.

Setup ini cocok untuk pengembangan, pengujian, dan beban kerja produksi skala kecil yang tidak memerlukan high availability atau penyimpanan terdistribusi. Anda mendapatkan kompatibilitas penuh API S3 tanpa kompleksitas menjalankan banyak node.

Menjalankan MinIO dengan Docker Run

Perintah docker run memulai MinIO dalam kontainer baru dengan semua konfigurasi dalam satu baris.

Berikut perintah dasarnya:

docker run -p 9000:9000 -p 9001:9001 \
  --name minio \
  -v ~/minio/data:/data \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=password123" \
  quay.io/minio/minio server /data --console-address ":9001"

Gambar 1 - Menjalankan MinIO dengan docker run

Menjalankan MinIO dengan docker run

Mari kita uraikan fungsi setiap bagiannya.

  • Port 9000 adalah endpoint API tempat aplikasi Anda terhubung untuk mengunggah dan mengunduh file. Di sinilah klien kompatibel S3 mengirimkan permintaan mereka.

  • Port 9001 menjadi host web console tempat Anda mengelola bucket, menetapkan izin, dan memantau penyimpanan. Anda akan menggunakannya untuk memverifikasi bahwa MinIO berjalan dengan benar.

  • Flag -v ~/minio/data:/data memetakan direktori lokal Anda ke lokasi penyimpanan kontainer. Semua yang disimpan MinIO masuk ke ~/minio/data di mesin host Anda. Saat Anda menghentikan atau menghapus kontainer, data Anda tetap aman di direktori ini.

  • Variabel lingkungan menetapkan kredensial akses Anda. MINIO_ROOT_USER adalah nama pengguna admin Anda dan MINIO_ROOT_PASSWORD adalah kata sandinya. Ini adalah kredensial yang akan Anda gunakan untuk masuk ke web console dan mengonfigurasi akses API.

  • Argumen server /data memberi tahu MinIO untuk berjalan dalam mode server dan menggunakan /data sebagai direktori penyimpanan. Flag --console-address ":9001" menentukan port yang digunakan web console.

Ada cara alternatif untuk menjalankan MinIO yang cocok jika Anda tidak menyukai perintah terminal panjang berbaris banyak.

Catatan: MinIO tidak lagi memperbarui image Docker Hub dan Quay mereka (per Oktober 2025). Kode di artikel ini tetap berfungsi untuk pengembangan lokal, tetapi untuk produksi, pertimbangkan alternatif yang dikelola seperti image MinIO dari Chainguard (cgr.dev/chainguard/minio:latest).

Menjalankan MinIO dengan Docker Compose

Docker Compose memungkinkan Anda mendefinisikan setup MinIO dalam file YAML alih-alih mengetik perintah panjang.

Ini membuat konfigurasi Anda dapat diulang dan versi-terkendali. Anda bisa membagikan file dengan tim, melakukan commit ke git, dan memulai ulang MinIO dengan pengaturan yang sama persis setiap saat.

Buat file docker-compose.yml:

services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./minio/data:/data
    command: server /data --console-address ":9001"

Strukturnya mencerminkan perintah docker run namun menata semuanya dalam bagian bernama. Port, variabel lingkungan, dan volume masing-masing punya blok sendiri.

Pemetaan volume bekerja sama — ./minio/data:/data membuat direktori di folder Anda saat ini dan me-mount-nya ke kontainer. ./ berarti relatif terhadap lokasi file docker-compose.yml ini berada.

Sekarang Anda bisa memulai MinIO dengan:

docker-compose up -d

Gambar 2 - Menjalankan MinIO dengan docker compose

Menjalankan MinIO dengan docker compose

Flag -d menjalankan kontainer di latar belakang. Terminal Anda tidak akan diblokir oleh log MinIO, dan kontainer tetap berjalan setelah Anda menutup terminal.

Hentikan dengan:

docker-compose down

Compose lebih baik untuk pengembangan karena Anda bisa menambahkan healthcheck, kebijakan restart, dan banyak layanan dalam file yang sama. Jika Anda perlu menambahkan database atau layanan lain di samping MinIO nanti, cukup tambahkan entri di bawah services:.

Cara Mengakses dan Memverifikasi MinIO Berjalan

Sekarang MinIO sudah berjalan, Anda perlu memastikan ia dimulai dengan benar sebelum digunakan untuk penyimpanan.

Ada dua cara untuk memverifikasi setup: web console untuk konfirmasi visual dan klien MinIO untuk verifikasi melalui command line.

Menggunakan web console MinIO

Buka peramban dan akses http://localhost:9001.

Anda akan melihat layar masuk yang meminta kredensial:

Gambar 3 - UI web MinIO

UI web MinIO

Anda dapat masuk dengan kredensial yang Anda berikan sebagai variabel lingkungan — admin/password123 pada kasus saya.

Setelah masuk, Anda akan berada di dasbor MinIO. Halaman utama menampilkan penggunaan penyimpanan, jumlah bucket, dan kesehatan sistem. Sidebar kiri memiliki opsi untuk membuat bucket, mengelola pengguna, dan melihat metrik.

Gambar 4 - Membuat bucket melalui UI web MinIO

Membuat bucket melalui UI web MinIO

Buat bucket uji untuk memverifikasi semuanya berfungsi. Klik "Buckets" di sidebar, lalu "Create Bucket." Beri nama seperti test-bucket dan klik create. Jika bucket muncul di daftar Anda, MinIO berjalan dengan benar dan menyimpan data.

Gambar 5 - Membuat bucket melalui UI web MinIO

Membuat bucket melalui UI web MinIO

Menggunakan klien MinIO (mc)

MinIO client adalah alat command-line yang memungkinkan Anda berinteraksi dengan MinIO seperti menggunakan AWS CLI.

Jalankan salah satu perintah ini untuk memasangnya:

# macOS
brew install minio/stable/mc

# Linux
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

Dan sekarang jalankan perintah ini untuk menghubungkan klien ke instance MinIO lokal Anda:

mc alias set local http://localhost:9000 admin password123

Ini membuat alias bernama local yang mengarah ke server MinIO Anda. Sekarang Anda bisa menjalankan perintah terhadapnya.

Daftar bucket Anda:

mc ls local

Gambar 6 - Menampilkan daftar bucket

Menampilkan daftar bucket

Jika Anda membuat bucket uji sebelumnya, Anda akan melihatnya di output. Jika perintah mengembalikan kosong atau menampilkan bucket Anda, MinIO berfungsi.

Sekarang Anda dapat mengunggah file uji ke bucket:

echo "test" > test.txt
mc cp test.txt local/test-bucket/

Lalu verifikasi keberadaannya:

mc ls local/test-bucket

Jika Anda melihat test.txt di output, berarti Anda telah menyiapkan semuanya dengan benar.

Gambar 7 - Menampilkan file dalam bucket

Menampilkan file dalam bucket

Berikut beberapa langkah pemecahan masalah cepat jika ada yang tidak berfungsi:

  • Periksa apakah kontainer berjalan dengan docker ps. Jika Anda tidak melihat kontainer bernama minio, berarti tidak dimulai atau crash.

  • Lihat log dengan docker logs minio. Cari error tentang port yang sudah digunakan atau masalah izin pada direktori data.

  • Jika Anda tidak bisa mengakses web console, verifikasi port tidak diblokir dengan memeriksa docker port minio. Anda seharusnya melihat 9000 dan 9001 terpetakan dengan benar.

  • Jika Anda mengalami error izin pada direktori data, jalankan chmod -R 755 ~/minio/data untuk memperbaiki akses.

Penyimpanan Persisten dan Data Volume

Secara bawaan, kontainer bersifat sementara — ketika Anda menghapus kontainer, semua yang ada di dalamnya hilang.

MinIO menyimpan objek, metadata, dan file konfigurasi. Jika Anda tidak menyiapkan penyimpanan persisten dengan benar, Anda akan kehilangan semua data saat memulai ulang atau menghapus kontainer.

Menggunakan volume lokal dengan Docker

Volume Docker dan bind mount menjaga data Anda tetap aman di luar kontainer.

Saat Anda menggunakan -v ~/minio/data:/data atau memetakan volume di Docker Compose, MinIO menulis semuanya ke mesin host Anda. Kontainer membaca dan menulis file ke /data, tetapi file tersebut sebenarnya berada di ~/minio/data pada host Anda.

Saat Anda menghentikan kontainer, menghapusnya, bahkan menghapus image — data Anda tetap di ~/minio/data. Mulai kontainer MinIO baru yang menunjuk ke direktori yang sama dan semua bucket, objek, serta pengaturan Anda kembali seperti semula.

Jika Anda tidak memetakan volume, MinIO menggunakan filesystem internal kontainer. Semuanya berjalan baik sampai Anda menghentikan kontainer. Saat Anda memulainya lagi, MinIO mulai dari awal tanpa bucket, objek, atau konfigurasi.

Contoh compose yang saya tunjukkan sebelumnya membuat folder minio/data tepat di lokasi file compose Anda:

Gambar 8 - Folder data MinIO

Folder data MinIO

Kesalahan penyimpanan umum

Menjalankan tanpa volume adalah kesalahan paling umum.

Anda memulai MinIO, mengunggah file, membuat bucket, dan semuanya tampak baik. Lalu Anda memulai ulang kontainer untuk pembaruan atau perubahan konfigurasi. Semua data Anda hilang karena disimpan di dalam kontainer, bukan di host Anda.

Selalu periksa apakah perintah Docker atau file Compose Anda memiliki pemetaan volume sebelum menaruh data nyata di MinIO.

Masalah izin terjadi saat Docker tidak dapat menulis ke direktori yang di-mount.

Proses MinIO di dalam kontainer berjalan sebagai pengguna tertentu. Jika pengguna tersebut tidak memiliki izin tulis pada direktori host, MinIO crash saat startup atau gagal diam-diam saat menyimpan objek.

Anda bisa memperbaikinya dengan memastikan direktori data dapat ditulis:

chmod -R 755 ~/minio/data

Atau jalankan kontainer dengan pengguna yang sesuai dengan pengguna host Anda:

docker run --user $(id -u):$(id -g) ...

Singkatnya, atur volume Anda dengan benar sekali dan Anda tidak perlu khawatir kehilangan data.

Variabel Lingkungan dan Konfigurasi Dasar

MinIO membaca konfigurasinya dari variabel lingkungan saat dimulai.

Ini berarti Anda dapat mengubah perilaku MinIO tanpa mengedit file konfigurasi atau membangun ulang kontainer. Anda menetapkan variabel ini dalam perintah docker run atau file Docker Compose.

Access key dan kredensial

MinIO memerlukan dua variabel lingkungan untuk autentikasi: MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD.

Keduanya membuat akun admin root yang memiliki kendali penuh atas instance MinIO Anda. Pengguna root dapat membuat bucket, mengelola pengguna lain, menetapkan kebijakan, dan mengakses semua objek tersimpan.

Tetapkan seperti ini saat docker run:

-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=your-secure-password"

Atau di Docker Compose:

environment:
  MINIO_ROOT_USER: admin
  MINIO_ROOT_PASSWORD: your-secure-password

Jangan gunakan kredensial bawaan di produksi. Contoh dalam artikel ini menggunakan admin dan password123 demi kesederhanaan, tetapi ini pilihan yang buruk untuk deployment nyata.

Pilih kata sandi kuat dengan minimal 8 karakter. Lebih baik lagi, gunakan kredensial acak dan simpan di pengelola kata sandi atau sistem manajemen secret.

Jangan hardcode kredensial di file Docker Compose yang Anda commit ke version control. Gunakan file environment sebagai gantinya:

environment:
  MINIO_ROOT_USER: ${MINIO_ROOT_USER}
  MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}

Lalu buat file .env berisi kredensial sebenarnya dan tambahkan ke .gitignore.

Konfigurasi port dan jaringan

MinIO membutuhkan dua port untuk berfungsi dengan benar.

  • Port 9000 menangani API S3. Di sinilah aplikasi Anda mengirim permintaan untuk menyimpan dan mengambil objek. Semua klien kompatibel S3 terhubung ke port ini.
  • Port 9001 menyajikan web console. Ini adalah antarmuka peramban tempat Anda mengelola MinIO melalui GUI.

Petakan port ini di perintah Docker Anda:

-p 9000:9000 -p 9001:9001

Konflik port terjadi saat layanan lain sudah menggunakan 9000 atau 9001 di host Anda.

Anda akan melihat error seperti "bind: address already in use" saat memulai kontainer. Perbaiki dengan memetakan ke port host yang berbeda:

-p 9090:9000 -p 9091:9001

Sekarang API MinIO berada di http://localhost:9090 dan console di http://localhost:9091. Kontainer tetap menggunakan 9000 dan 9001 secara internal, namun secara eksternal Anda mengakses melalui port berbeda.

Perintah ini akan membantu Anda memeriksa apa yang menggunakan port sebelum memulai MinIO:

# Linux/macOS
lsof -i :9000
lsof -i :9001

# Windows
netstat -ano | findstr :9000
netstat -ano | findstr :9001

Memeriksa apa yang menggunakan port

Jika Anda menjalankan banyak instance MinIO pada mesin yang sama, berikan setiap instance pemetaan port unik agar tidak saling bertabrakan.

Menjalankan MinIO dalam Mode Terdistribusi dengan Docker

Mode terdistribusi menjalankan MinIO di beberapa server dengan banyak drive untuk high availability dan redundansi data.

Anda tidak memerlukannya untuk pengembangan atau pengujian. Mode single-node sudah menangani sebagian besar use case dengan baik. Lewati bagian ini kecuali Anda merencanakan deployment produksi yang harus tetap online meski server gagal.

Kapan MinIO terdistribusi masuk akal

Gunakan mode terdistribusi saat Anda membutuhkan toleransi kesalahan.

Jika satu server mati dalam setup terdistribusi, MinIO tetap berjalan dan data Anda tetap dapat diakses. Sistem menggunakan erasure coding untuk membagi objek ke banyak drive dan server, sehingga Anda bisa kehilangan drive atau seluruh node tanpa kehilangan data.

Anda juga membutuhkan mode terdistribusi untuk penyimpanan skala besar. Jika Anda menyimpan terabita atau petabita data, menyebarkannya ke banyak mesin memberi performa dan kapasitas lebih baik daripada satu server.

Pengembangan lokal tidak membutuhkan semua ini. Mode terdistribusi menambah kompleksitas — Anda memerlukan banyak mesin atau VM, jaringan terkoordinasi, dan konfigurasi drive yang cermat. Untuk menguji API S3 atau menjalankan penyimpanan objek di laptop, mode single-node sudah mencukupi.

Lingkungan produksi menggunakan mode terdistribusi saat downtime tidak bisa diterima dan kehilangan data akan berakibat fatal. Pikirkan sistem backup, data lake, atau aplikasi di mana pengguna bergantung pada ketersediaan penyimpanan konstan.

Gambaran setup tingkat tinggi

MinIO terdistribusi memerlukan setidaknya empat drive di beberapa node.

Setiap node menjalankan kontainer MinIO, dan semua node harus melihat konfigurasi drive yang sama. Anda tidak boleh mencampur node single-drive dengan multi-drive atau mengubah jumlah drive setelah setup.

Setup terdistribusi dasar terlihat seperti ini:

  • Empat server (atau VM) dengan MinIO terpasang
  • Beberapa drive pada setiap server yang didedikasikan untuk MinIO
  • Konektivitas jaringan antar semua node
  • Path drive identik pada setiap node

Anda bisa menangani koordinasi dalam satu file Compose, tetapi saya peringatkan — itu akan panjang. Anda harus mendefinisikan semua node, menetapkan path drive, dan memulainya bersama.

Berikut contoh lengkap untuk empat node dengan dua drive masing-masing:

version: "3.9"

services:
  minio1:
    image: quay.io/minio/minio:latest
    hostname: minio1
    container_name: minio1
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9001:9000"
      - "9091:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio1/data1:/data1
      - ./data/minio1/data2:/data2
    networks:
      - minio

  minio2:
    image: quay.io/minio/minio:latest
    hostname: minio2
    container_name: minio2
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9002:9000"
      - "9092:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio2/data1:/data1
      - ./data/minio2/data2:/data2
    networks:
      - minio

  minio3:
    image: quay.io/minio/minio:latest
    hostname: minio3
    container_name: minio3
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9003:9000"
      - "9093:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio3/data1:/data1
      - ./data/minio3/data2:/data2
    networks:
      - minio

  minio4:
    image: quay.io/minio/minio:latest
    hostname: minio4
    container_name: minio4
    command: server http://minio{1...4}/data{1...2} --console-address ":9001"
    ports:
      - "9004:9000"
      - "9094:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: password123
    volumes:
      - ./data/minio4/data1:/data1
      - ./data/minio4/data2:/data2
    networks:
      - minio

networks:
  minio:
    driver: bridge

Sintaks {1...4} memberi tahu MinIO untuk terhubung ke empat node (minio1 hingga minio4) dengan dua drive masing-masing (data1 dan data2). Setiap node mendapat pemetaan port unik sehingga Anda dapat mengaksesnya secara individual — node 1 menggunakan 9001/9091, node 2 menggunakan 9002/9092, dan seterusnya.

Jaringan minio-distributed memungkinkan kontainer saling menjangkau berdasarkan hostname. Semua node harus menggunakan kredensial yang sama dan melihat tata letak drive yang sama.

Untuk memulai kluster, pertama buat direktori data lalu jalankan file compose

mkdir -p data/minio{1..4}/data{1..2}
docker compose up -d

Gambar 10 - Menjalankan MinIO dalam mode terdistribusi

Menjalankan MinIO dalam mode terdistribusi

Itu saja! Sekarang Anda dapat mengunjungi URL berikut untuk mengakses UI web:

Namun sekali lagi, jangan membangunnya kecuali Anda benar-benar membutuhkannya — mode terdistribusi ditujukan untuk beban kerja produksi di mana uptime dan redundansi membenarkan kompleksitas tambahan.

Selain itu, Anda mungkin menginginkan hal-hal seperti TLS, endpoint console tunggal, volume/disk eksternal untuk lingkungan produksi penuh.

Masalah Umum Saat Menjalankan MinIO di Docker

Sebagian besar masalah MinIO di Docker berasal dari volume, port, atau kredensial yang salah konfigurasi.

Berikut masalah yang kemungkinan besar Anda temui dan cara cepat memperbaikinya.

Kontainer mulai tetapi web UI tidak dapat diakses

Anda menjalankan docker ps dan melihat kontainer berjalan, tetapi http://localhost:9001 tidak menampilkan apa pun atau time out.

Untuk mengatasinya, periksa dulu apakah port console dipetakan dengan benar:

docker port minio

Anda seharusnya melihat 9001/tcp -> 0.0.0.0:9001. Jika Anda tidak melihat port 9001 tercantum, Anda lupa memetakannya di perintah docker run atau file Compose.

Periksa juga log MinIO:

docker logs minio

Cari baris bertuliskan "Console: http://..." — ini memberi tahu alamat mana yang sebenarnya didengarkan MinIO. Jika Anda melihat port berbeda dari yang diharapkan, flag --console-address Anda mungkin salah.

Error izin pada volume yang di-mount

MinIO crash saat startup atau Anda melihat error "permission denied" di log saat mencoba menulis ke /data.

Proses MinIO berjalan sebagai pengguna tertentu di dalam kontainer, dan pengguna tersebut membutuhkan akses tulis ke direktori yang di-mount. Perbaiki dengan:

chmod -R 755 ~/minio/data

Atau jika Anda di Linux, jalankan kontainer dengan user ID Anda:

docker run --user $(id -u):$(id -g) ...

Konflik port dengan layanan lain

Anda mendapat "bind: address already in use" saat memulai kontainer.

Ini berarti ada layanan lain yang sudah menggunakan port 9000 atau 9001. Cari tahu apa yang menggunakannya:

# Linux/macOS
lsof -i :9000
lsof -i :9001

# Windows
netstat -ano | findstr :9000

Lalu petakan MinIO ke port host yang berbeda sebagai gantinya:

docker run -p 9090:9000 -p 9091:9001 ...

Sekarang akses API di localhost:9090 dan console di localhost:9091.

Kredensial tidak berfungsi sebagaimana mestinya

Anda menetapkan MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD namun tidak bisa masuk, atau kontainer tidak mau mulai.

Untuk mengatasinya, periksa apakah Anda benar-benar melewatkan variabel lingkungan:

docker inspect minio | grep -A 5 Env

Cari MINIO_ROOT_USER dan MINIO_ROOT_PASSWORD di output. Jika tidak ada, Anda lupa flag -e atau bagian environment: di file Compose.

MinIO juga mensyaratkan kata sandi minimal 8 karakter. Jika kata sandi Anda lebih pendek, kontainer mungkin menolaknya atau menggunakan default sebagai gantinya.

Jika Anda mengubah kredensial pada setup yang sudah ada, hentikan dan hapus kontainer sepenuhnya, lalu mulai dari awal:

docker stop minio
docker rm minio
docker run ...  # dengan kredensial baru

File kredensial lama mungkin masih ada di direktori data Anda dan menyebabkan konflik.

Praktik Terbaik untuk Menjalankan MinIO dengan Docker

Ikuti praktik ini untuk menghindari kesalahan umum dan menjaga setup MinIO Anda tetap mudah dikelola.

  • Gunakan Docker Compose untuk keterulangan. File Compose mendokumentasikan konfigurasi Anda secara lengkap — port, volume, variabel lingkungan, dan perintah. Anda bisa menaruhnya di version control, membagikannya dengan tim, dan mereplikasi setup identik di berbagai mesin. Menjalankan perintah docker run panjang dari riwayat shell mengarah pada pergeseran konfigurasi dan kesalahan.

  • Selalu konfigurasikan penyimpanan persisten. Petakan volume atau bind mount sebelum Anda menyimpan data nyata. Kontainer bersifat sementara — jika Anda melewatkan langkah ini, Anda akan kehilangan semuanya saat kontainer restart. Periksa setup Anda dengan docker inspect minio dan verifikasi pemetaan volume sudah benar.

  • Jauhkan kredensial dari riwayat perintah. Jangan menaruh kata sandi langsung dalam perintah docker run atau melakukan commit ke git di file Compose. Gunakan file environment (.env) dengan Docker Compose, atau lewatkan kredensial melalui variabel lingkungan saat runtime. Tambahkan .env ke .gitignore segera.

  • Gunakan mode single-node hanya untuk pengembangan. Mode terdistribusi kompleks dan lambat disiapkan. Anda tidak perlu high availability atau erasure coding di laptop. Simpan deployment terdistribusi untuk produksi di mana downtime benar-benar penting.

  • Pantau log saat startup. Jalankan docker logs -f minio saat pertama kali memulai MinIO. Log menampilkan endpoint API, URL console, dan kesalahan konfigurasi. Jika ada yang salah, Anda akan langsung melihatnya alih-alih bertanya-tanya mengapa tidak ada yang berfungsi.

Ikuti praktik ini dan setup MinIO Anda akan solid sejak hari pertama.

Kesimpulan

Menjalankan MinIO dengan Docker berarti Anda dapat memiliki penyimpanan objek yang kompatibel S3 berjalan di mesin Anda dalam waktu kurang dari satu menit.

Untuk pengembangan, pengujian, dan proyek skala kecil, MinIO single-node di Docker memberi Anda semua yang diperlukan. Anda mendapatkan kompatibilitas penuh API S3, web console untuk manajemen, dan kendali penuh atas data tanpa bergantung pada layanan cloud atau membayar penyimpanan yang tidak Anda gunakan.

Mulailah dari dasar: perintah docker run sederhana atau file Docker Compose dengan volume persisten dan kredensial yang aman (lebih disarankan yang kedua). Uji setup Anda, verifikasi berfungsi, dan hanya tambahkan kompleksitas saat benar-benar dibutuhkan.

Mode terdistribusi, high availability, dan konfigurasi tingkat produksi ada karena suatu alasan — tetapi alasannya bukan untuk pengembangan lokal. Beralihlah ke setup tersebut saat Anda melakukan deployment ke produksi, ketika downtime berbiaya, atau saat Anda menyimpan data yang tidak boleh hilang. Sampai saat itu, tetap sederhana dan fokus membangun aplikasi alih-alih mengelola infrastruktur.

Saat Anda siap menyelami topik Docker yang lebih kompleks, lihat kursus kami Containerization and Virtualization with Docker and Kubernetes.

Dario Radečić

Penulis

Dario Radečić

Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

FAQs

Bagaimana cara mengoptimalkan performa MinIO untuk unggahan dengan konkruensi tinggi?

Tingkatkan jumlah koneksi konkuren yang dapat ditangani server MinIO Anda dengan menyesuaikan variabel lingkungan MINIO_API_REQUESTS_MAX. Untuk beban kerja dengan konkruensi tinggi, pertimbangkan juga menggunakan beberapa drive dalam setup Anda karena MinIO secara otomatis mendistribusikan beban ke drive yang tersedia. Jika Anda menjalankan mode terdistribusi, pastikan bandwidth jaringan antar node dapat menangani traffic dan gunakan antarmuka jaringan khusus untuk komunikasi MinIO.

Apa praktik terbaik untuk menyiapkan MinIO dengan Docker Compose?

Selalu gunakan Docker Compose alih-alih perintah docker run untuk setup mirip produksi karena membuat konfigurasi Anda dapat diulang dan versi-terkendali. Simpan kredensial dalam file .env terpisah dan tambahkan ke .gitignore untuk menjaga secret tetap di luar repositori. Petakan volume persisten ke direktori khusus di host Anda, tetapkan kebijakan restart ke unless-stopped atau always, dan sertakan konfigurasi healthcheck untuk memantau status kontainer.

Bagaimana cara mengonfigurasi MinIO untuk akses aman menggunakan TLS?

Hasilkan sertifikat TLS dan tempatkan di direktori pada host Anda, lalu mount direktori tersebut ke /root/.minio/certs di dalam kontainer MinIO. MinIO secara otomatis mendeteksi sertifikat di lokasi ini dan mengaktifkan HTTPS saat startup. Anda memerlukan file public.crt untuk sertifikat dan private.key untuk kunci privat, dan sertifikat harus cocok dengan hostname atau alamat IP server MinIO Anda.

Apa perbedaan utama antara MinIO dan alternatif kompatibel S3 lainnya?

MinIO sepenuhnya open-source dan dirancang khusus untuk penyimpanan objek berperforma tinggi, sementara banyak alternatif kompatibel S3 adalah layanan cloud atau memiliki set fitur terbatas. MinIO mendukung fitur seperti distributed erasure coding, versioning, enkripsi, dan kebijakan lifecycle yang sebanding dengan kemampuan AWS S3. Tidak seperti beberapa alternatif, MinIO dapat berjalan di mana saja — bare metal, VM, kontainer, atau Kubernetes — dan tidak mengunci Anda pada penyedia cloud tertentu.

Bagaimana saya dapat mengotomatiskan proses backup dan restore MinIO?

Gunakan MinIO client (mc) untuk membuat skrip yang memirror bucket ke instance MinIO lain atau penyimpanan kompatibel S3 dengan mc mirror source/ destination/. Jadwalkan skrip ini dengan cron job atau gunakan fitur replikasi bucket bawaan MinIO untuk otomatis menyinkronkan data antar instance MinIO. Untuk pemulihan, gunakan mc mirror secara terbalik untuk menyalin data kembali dari lokasi backup, atau gunakan mc cp dengan flag --recursive untuk memulihkan bucket atau objek tertentu.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R