Ana içeriğe geç

MinIO Docker: S3 Uyumluluklu Nesne Depolama için Kurulum Kılavuzu

Yerel geliştirme için S3 uyumlu nesne depolama elde etmek üzere MinIO’yu Docker ile çalıştırın; kurulum, kalıcı birimler, sorun giderme ve dağıtık modun ne zaman kullanılacağını kapsar.
· 15 dk. oku

Yapay Zeka ile Keşfedin

Geliştirme için nesne depolamaya mı ihtiyacınız var ama AWS S3 kurmak ve ücret ödemek istemiyor musunuz?

MinIO size S3 uyumlu ve her yerde çalışabilen bir depolama sunar — dizüstü bilgisayarınızda, bir VM’de veya bir Kubernetes kümesinde. Açık kaynaklıdır; yani satıcıdan bağımsızdır ve ay sonunda sürpriz faturalarla karşılaşmazsınız. Docker ile birlikte kullanıldığında, MinIO’yu çalıştırmak daha da kolaylaşır; çünkü makinenuza doğrudan bir şey kurmadan saniyeler içinde bir depolama sunucusu ayağa kaldırabilirsiniz.

Docker konteynerleri MinIO’yu sisteminizden yalıtır ve aynı zamanda yapılandırma ve veri kalıcılığı üzerinde tam kontrol sağlar. S3 API’lerini yerel olarak test edebilir, üretim depolama kurulumlarını taklit edebilir veya küçük projeler için hafif nesne depolama çalıştırabilirsiniz.

Bu yazıda, MinIO’yu Docker ile nasıl çalıştıracağınızı, doğru çalıştığını nasıl doğrulayacağınızı ve en yaygın kurulum seçeneklerini nasıl yapılandıracağınızı göstereceğim.

Docker’a tamamen yeniyseniz, bir Cumartesi öğleden sonranızı temellere ayırın — DataCamp’in Introduction to Docker kursu sizin için yeterlidir.

Önkoşullar

MinIO’yu Docker ile çalıştırmak için üç şeye ihtiyacınız var.

Makinenizde Docker’ın kurulu ve çalışıyor olması. Bunu terminalinizde docker --version komutunu çalıştırarak doğrulayabilirsiniz. Bir sürüm numarası görürseniz, hazırsınız demektir.

Temel düzeyde Docker komutlarına aşinalık. Konteynerleri başlatıp durdurmayı, logları görüntülemeyi ve Docker imajlarıyla çalışmayı bilmelisiniz. Daha önce docker run çalıştırdıysanız veya Docker Compose ile çalıştıysanız sorun olmaz.

Kalıcı depolama için yerel bir dizin. MinIO’nun, verilerinizi konteynerin dışında saklayacağı bir yere ihtiyacı var. Ana makinenizde boş bir dizin oluşturun — ~/minio/data gibi bir konum iyi çalışır.

Hepsi bu. Liste kısa ve basit, ancak devam etmeden önce tüm maddeleri işaretlediğinizden emin olun.

Docker ile MinIO Nasıl Çalıştırılır (Tek Düğüm Kurulumu)

Tek düğümlü bir MinIO kurulumu, Docker konteynerinde tek bir MinIO örneği çalıştırır ve tüm verilerinizi tek bir yerde depolar.

Bu kurulum, yüksek erişilebilirlik veya dağıtık depolama gerektirmeyen geliştirme, test ve küçük ölçekli üretim iş yükleri için uygundur. Birden çok düğüm çalıştırmanın karmaşıklığı olmadan tam S3 API uyumluluğu elde edersiniz.

Docker Run ile MinIO’yu Çalıştırma

docker run komutu, MinIO’yu yeni bir konteynerde başlatır ve her şeyi tek satırda yapılandırır.

Temel komut şöyledir:

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"

Görsel 1 - docker run ile MinIO’yu çalıştırma

docker run ile MinIO’yu çalıştırma

Her bir bölümün ne yaptığını açıklayalım.

  • 9000 numaralı port, uygulamalarınızın dosya yüklemek ve indirmek için bağlandığı API uç noktasıdır. S3 uyumlu istemciler isteklerini buraya gönderir.

  • 9001 numaralı port, kovaları yönetebileceğiniz, izinleri ayarlayabileceğiniz ve depolamayı izleyebileceğiniz web konsolunu barındırır. MinIO’nun doğru çalıştığını doğrulamak için bunu kullanacaksınız.

  • -v ~/minio/data:/data bayrağı, yerel dizininizi konteynerin depolama konumuna eşler. MinIO’nun depoladığı her şey ana makinenizdeki ~/minio/data içine gider. Konteyneri durdurduğunuzda veya kaldırdığınızda, verileriniz bu dizinde güvende kalır.

  • Ortam değişkenleri erişim kimlik bilgilerinizi ayarlar. MINIO_ROOT_USER yönetici kullanıcı adınızdır ve MINIO_ROOT_PASSWORD parolanızdır. Bunlar, web konsoluna giriş yapmak ve API erişimini yapılandırmak için kullanacağınız kimlik bilgilerdir.

  • server /data argümanı MinIO’ya sunucu modunda çalışmasını ve depolama dizini olarak /data konumunu kullanmasını söyler. --console-address ":9001" bayrağı ise web konsolunun dinleyeceği portu belirtir.

Uzun ve çok satırlı terminal komutlarının hayranı değilseniz MinIO’yu çalıştırmanın alternatif bir yolu daha var.

Not: MinIO, Docker Hub ve Quay imajlarını artık güncellemiyor (Ekim 2025 itibarıyla). Bu yazıdaki kod yerel geliştirme için hâlâ çalışır; ancak üretim kullanımı için Chainguard’ın MinIO imajı (cgr.dev/chainguard/minio:latest) gibi bakımı yapılan alternatifleri değerlendirin.

Docker Compose ile MinIO’yu Çalıştırma

Docker Compose, uzun komutlar yazmak yerine MinIO kurulumunuzu bir YAML dosyasında tanımlamanızı sağlar.

Bu sayede yapılandırmanız tekrarlanabilir ve sürüm kontrollü olur. Dosyayı ekibinizle paylaşabilir, git’e aktarabilir ve MinIO’yu her seferinde aynı ayarlarla yeniden başlatabilirsiniz.

Bir docker-compose.yml dosyası oluşturun:

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"

docker run komutunun yapısını yansıtır, ancak her şeyi adlandırılmış bölümlerde düzenler. Portlar, ortam değişkenleri ve birimler kendi bloklarına sahiptir.

Birim eşlemesi aynı şekilde çalışır — ./minio/data:/data, bulunduğunuz klasörde bir dizin oluşturur ve bunu konteynere bağlar. ./ ifadesi, bu docker-compose.yml dosyasının bulunduğu dizine göredir.

Artık MinIO’yu şu komutla başlatabilirsiniz:

docker-compose up -d

Görsel 2 - docker compose ile MinIO’yu çalıştırma

docker compose ile MinIO’yu çalıştırma

-d bayrağı konteyneri arka planda çalıştırır. Terminaliniz MinIO logları tarafından meşgul edilmez ve terminali kapattıktan sonra da konteyner çalışmaya devam eder.

Şununla durdurabilirsiniz:

docker-compose down

Compose, geliştirme için daha iyidir; çünkü aynı dosyada sağlık kontrolleri, yeniden başlatma ilkeleri ve birden fazla servisi ekleyebilirsiniz. Daha sonra MinIO’nun yanına bir veritabanı veya başka servisler eklemeniz gerekirse, services: altına yeni girdiler eklemeniz yeterlidir.

MinIO’ya Erişim ve Çalıştığını Doğrulama

Artık MinIO çalıştığına göre, depolama için kullanmadan önce doğru şekilde başladığını doğrulamak isteyeceksiniz.

Kurulumunuzu doğrulamanın iki yolu var: görsel doğrulama için web konsolu ve komut satırı doğrulaması için MinIO istemcisi.

MinIO web konsolunu kullanma

Tarayıcınızı açın ve http://localhost:9001 adresine gidin.

Kimlik bilgilerini isteyen bir giriş ekranı göreceksiniz:

Görsel 3 - MinIO web arayüzü

MinIO web arayüzü

Ortam değişkenleri olarak sağladığınız kimlik bilgileriyle giriş yapabilirsiniz — benim örneğimde admin/password123.

Giriş yaptıktan sonra MinIO panosuna yönlendirilirsiniz. Ana sayfa depolama kullanımını, kova sayısını ve sistem sağlığını gösterir. Sol kenar çubuğunda kova oluşturma, kullanıcı yönetimi ve metrikleri görüntüleme seçenekleri bulunur.

Görsel 4 - MinIO web arayüzü üzerinden kova oluşturma

MinIO web arayüzü üzerinden kova oluşturma

Her şeyin çalıştığını doğrulamak için bir test kovası oluşturun. Kenar çubuğunda "Buckets"a tıklayın, ardından "Create Bucket"a. test-bucket gibi bir ad verin ve oluştur’a tıklayın. Kova listenizde görünüyorsa, MinIO doğru çalışıyor ve veri depoluyor demektir.

Görsel 5 - MinIO web arayüzü üzerinden kova oluşturma

MinIO web arayüzü üzerinden kova oluşturma

MinIO istemcisini (mc) kullanma

MinIO istemcisi, AWS CLI’da olduğu gibi MinIO ile etkileşim kurmanızı sağlayan bir komut satırı aracıdır.

Kurmak için şu komutlardan birini çalıştırın:

# 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/

Şimdi istemciyi yerel MinIO örneğinize bağlamak için şu komutu çalıştırın:

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

Bu, MinIO sunucunuza işaret eden local adlı bir takma ad oluşturur. Artık buna karşı komutlar çalıştırabilirsiniz.

Kovalarınızı listeleyin:

mc ls local

Görsel 6 - Kovaları listeleme

Kovaları listeleme

Daha önce test kovasını oluşturduysanız, çıktıda göreceksiniz. Komut boş dönerse ya da kovalarınızı gösterirse, MinIO çalışıyor demektir.

Şimdi kovaya bir test dosyası yükleyebilirsiniz:

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

Ve ardından orada olduğunu doğrulayın:

mc ls local/test-bucket

Çıktıda test.txt görüyorsanız, her şeyi doğru şekilde kurmuşsunuz demektir.

Görsel 7 - Bir kovadaki dosyaları listeleme

Bir kovadaki dosyaları listeleme

Bir şeyler çalışmıyorsa işte hızlı sorun giderme ipuçları:

  • Konteynerin çalışıp çalışmadığını docker ps ile kontrol edin. minio adlı bir konteyner görmüyorsanız, başlamamış ya da çökmüş demektir.

  • Logları docker logs minio ile görüntüleyin. Hâlihazırda kullanımda olan portlar veya veri dizinindeki izin problemleriyle ilgili hatalara bakın.

  • Web konsoluna erişemiyorsanız, portların engellenmediğini docker port minio ile doğrulayın. 9000 ve 9001’in her ikisinin de doğru eşlendiğini görmelisiniz.

  • Veri dizininde izin hatalarıyla karşılaşıyorsanız, erişim sorunlarını düzeltmek için chmod -R 755 ~/minio/data komutunu çalıştırın.

Kalıcı Depolama ve Veri Birimleri

Varsayılan olarak konteynerler geçicidir — bir konteyneri kaldırdığınızda içindeki her şey kaybolur.

MinIO nesneleri, metaverileri ve yapılandırma dosyalarını depolar. Kalıcı depolamayı doğru ayarlamazsanız, konteyneri yeniden başlattığınız veya kaldırdığınız anda tüm verilerinizi kaybedersiniz.

Docker ile yerel birimler kullanma

Docker volume’leri ve bind mount’lar verilerinizi konteynerin dışında güvende tutar.

-v ~/minio/data:/data kullanırken veya Docker Compose’ta birim eşlemesi yaptığınızda MinIO her şeyi ana makinenize yazar. Konteyner /data konumuna okur/yazar; ancak bu dosyalar aslında ana makinenizdeki ~/minio/data içinde bulunur.

Konteyneri durdurduğunuzda, kaldırdığınızda veya hatta imajı sildiğinizde — verileriniz ~/minio/data içinde kalır. Aynı dizine işaret eden yeni bir MinIO konteyneri başlatın; tüm kovalarınız, nesneleriniz ve ayarlarınız bıraktığınız gibi geri gelir.

Bir birimi eşlemezseniz MinIO, konteynerin dahili dosya sistemini kullanır. Her şey, konteyneri durdurana kadar düzgün çalışır. Yeniden başlattığınızda, MinIO kovasız, nesnesiz ve yapılandırmasız sıfırdan başlar.

Daha önce gösterdiğim compose örneği, compose dosyanızın bulunduğu yerde bir minio/data klasörü oluşturur:

Görsel 8 - MinIO veri klasörü

MinIO veri klasörü

Yaygın depolama hataları

Birimsiz çalıştırmak en yaygın hatadır.

MinIO’yu başlatır, dosyalar yüklersiniz, kovalar oluşturursunuz ve her şey yolunda görünür. Sonra bir güncelleme veya yapılandırma değişikliği için konteyneri yeniden başlatırsınız. Tüm verileriniz kaybolur; çünkü ana makinede değil, konteynerin içinde saklanmıştır.

Gerçek veri koymadan önce Docker komutunuzun veya Compose dosyanızın birim eşlemesi içerip içermediğini her zaman kontrol edin.

İzin sorunları Docker, bağladığınız dizine yazamadığında meydana gelir.

Konteyner içindeki MinIO işlemi belirli bir kullanıcı olarak çalışır. Bu kullanıcının ana makine dizininde yazma izni yoksa MinIO başlarken çöker veya nesneleri saklamaya çalışırken sessizce başarısız olur.

Veri dizininizin yazılabilir olduğundan emin olarak bunu düzeltebilirsiniz:

chmod -R 755 ~/minio/data

Ya da konteyneri, ana makine kullanıcınızla eşleşen bir kullanıcıyla çalıştırın:

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

Kısacası, birimlerinizi bir kez doğru şekilde kurun; veri kaybı konusunda endişelenmenize gerek kalmasın.

Ortam Değişkenleri ve Temel Yapılandırma

MinIO, başlatılırken yapılandırmasını ortam değişkenlerinden okur.

Bu, yapılandırma dosyalarını düzenlemeden veya konteynerleri yeniden oluşturmadan MinIO’nun davranışını değiştirebileceğiniz anlamına gelir. Bu değişkenleri docker run komutunda veya Docker Compose dosyanızda ayarlarsınız.

Erişim anahtarları ve kimlik bilgileri

MinIO, kimlik doğrulama için iki ortam değişkeni gerektirir: MINIO_ROOT_USER ve MINIO_ROOT_PASSWORD.

Bunlar, MinIO örneğiniz üzerinde tam denetime sahip olan kök yönetici hesabını oluşturur. Kök kullanıcı kovalar oluşturabilir, diğer kullanıcıları yönetebilir, ilkeler belirleyebilir ve depolanan tüm nesnelere erişebilir.

Bunları docker run sırasında şu şekilde ayarlayın:

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

Veya Docker Compose’ta:

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

Üretimde varsayılan kimlik bilgilerini kullanmayın. Bu yazıdaki örneklerde basitlik için admin ve password123 kullanıldı, ancak gerçek dağıtımlar için bunlar çok kötü seçimlerdir.

En az 8 karakterli güçlü bir parola seçin. Daha da iyisi, rastgele oluşturulmuş kimlik bilgileri kullanın ve bir parola yöneticisinde veya gizli yönetim sisteminde saklayın.

Sürüm kontrolüne eklediğiniz Docker Compose dosyalarına kimlik bilgilerini gömmeyin. Bunun yerine ortam dosyalarını kullanın:

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

Ardından gerçek kimlik bilgilerinizle bir .env dosyası oluşturun ve .gitignore’a ekleyin.

Port yapılandırması ve ağ

MinIO’nun düzgün çalışması için iki porta ihtiyacı vardır.

  • 9000 numaralı port S3 API’sini yönetir. Uygulamalarınız nesneleri depolamak ve almak için istekleri buraya gönderir. Tüm S3 uyumlu istemciler bu porta bağlanır.
  • 9001 numaralı port web konsolunu sunar. MinIO’yu GUI üzerinden yönettiğiniz tarayıcı arayüzüdür.

Bu portları Docker komutunuzda eşleyin:

-p 9000:9000 -p 9001:9001

Port çakışmaları, ana makinenizde 9000 veya 9001’i zaten başka bir servisin kullanmasıyla ortaya çıkar.

Konteyneri başlatırken "bind: address already in use" gibi bir hata görürsünüz. Bunu farklı ana makine portlarına eşleyerek düzeltin:

-p 9090:9000 -p 9091:9001

Artık MinIO’nun API’si http://localhost:9090 adresinde, konsol ise http://localhost:9091 adresinde. Konteyner içinde hâlâ 9000 ve 9001 kullanılır; ancak dışarıdan farklı portlar üzerinden erişirsiniz.

MinIO’yu başlatmadan önce bir portu hangi sürecin kullandığını kontrol etmek için şu komutlar yardımcı olur:

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

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

Bir portu hangi sürecin kullandığını kontrol etme

Aynı makinede birden fazla MinIO örneği çalıştırıyorsanız, her birine benzersiz port eşlemeleri vererek çakışmaları önleyin.

Docker ile MinIO’yu Dağıtık Modda Çalıştırma

Dağıtık mod, yüksek erişilebilirlik ve veri yedekliliği için MinIO’yu birden çok sunucu ve sürücüye yayarak çalıştırır.

Geliştirme veya test için buna ihtiyacınız yok. Tek düğümlü mod çoğu kullanım durumu için fazlasıyla yeterlidir. Sunucu arızalansa bile çevrimiçi kalması gereken bir üretim dağıtımı planlamıyorsanız bu bölümü atlayın.

Dağıtık MinIO ne zaman mantıklıdır

Hata toleransı gerektiğinde dağıtık modu kullanın.

Dağıtık bir kurulda bir sunucu devre dışı kalsa bile MinIO çalışmaya devam eder ve verileriniz erişilebilir kalır. Sistem, nesneleri birden çok sürücüye ve sunucuya dağıtmak için erasure coding kullanır; böylece sürücüleri veya tüm düğümleri kaybetseniz de verileri kaybetmezsiniz.

Büyük ölçekli depolama için de dağıtık moda ihtiyaç duyarsınız. Terabaytlarca veya petabaytlarca veri depoluyorsanız, verileri birden çok makineye yaymak tek bir sunucunun sağlayabileceğinden daha iyi performans ve daha fazla kapasite sunar.

Yerel geliştirme bunların hiçbirini gerektirmez. Dağıtık mod, karmaşıklık ekler — birden çok makine veya VM, koordineli ağ ve dikkatli sürücü yapılandırması gerekir. S3 API’lerini test etmek veya dizüstü bilgisayarınızda nesne depolama çalıştırmak için tek düğümlü mod ihtiyacınızı karşılar.

Üretim ortamlarında, kesinti kabul edilemez olduğunda ve veri kaybı felaket boyutunda sonuçlar doğuracağında dağıtık mod kullanılır. Yedekleme sistemleri, veri gölleri veya kullanıcıların sürekli depolama erişimine bağlı olduğu uygulamaları düşünün.

Yüksek düzeyde kurulum özeti

Dağıtık MinIO, birden çok düğüme yayılmış en az dört sürücü gerektirir.

Her düğüm bir MinIO konteyneri çalıştırır ve tüm düğümler aynı sürücü yapılandırmasını görmelidir. Tek sürücülü düğümleri çok sürücülü düğümlerle karıştıramaz veya kurulumdan sonra sürücü sayısını değiştiremezsiniz.

Temel bir dağıtık kurulum şöyle görünür:

  • Dört sunucu (veya VM) üzerine kurulu MinIO
  • Her sunucuda MinIO’ya adanmış birden çok sürücü
  • Tüm düğümler arasında ağ bağlantısı
  • Her düğümde aynı sürücü yolları

Koordinasyonu tek bir Compose dosyasında yönetebilirsiniz; ama uyarayım — uzun bir dosya olacaktır. Tüm düğümleri tanımlamanız, sürücü yollarını ayarlamanız ve hepsini birlikte başlatmanız gerekir.

İki sürücülü dört düğüm için eksiksiz bir örnek işte şöyle:

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

{1...4} sözdizimi, MinIO’ya iki sürücülü (data1 ve data2) dört düğüme (minio1’den minio4’e) bağlanmasını söyler. Her düğüm, ayrı ayrı erişebilmeniz için benzersiz port eşlemesi alır — 1. düğüm 9001/9091’i, 2. düğüm 9002/9092’yi vb. kullanır.

minio-distributed ağı, konteynerlerin birbirine ana makine adıyla ulaşabilmesini sağlar. Tüm düğümler aynı kimlik bilgilerini kullanmalı ve aynı sürücü düzenini görmelidir.

Kümeyi başlatmak için önce veri dizinlerini oluşturun, ardından compose dosyasını çalıştırın

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

Görsel 10 - Dağıtık modda MinIO’yu çalıştırma

Dağıtık modda MinIO’yu çalıştırma

Hepsi bu! Web arayüzüne erişmek için aşağıdaki URL’lerden herhangi birini ziyaret edebilirsiniz:

Ancak tekrar edelim, gerçekten ihtiyacınız yoksa bunu kurmayın — dağıtık mod, çalışma süresi ve yedekliliğin ek karmaşıklığı haklı çıkardığı üretim iş yükleri içindir.

Ayrıca, tam bir üretim ortamı için TLS, tek konsol uç noktası, harici birimler/diske gibi şeyleri de isteyebilirsiniz.

Docker’da MinIO Çalıştırırken Yaygın Sorunlar

MinIO Docker sorunlarının çoğu yanlış yapılandırılmış birimler, portlar veya kimlik bilgilerinden kaynaklanır.

Gerçekte karşılaşacağınız sorunlar ve bunları hızlıca nasıl çözeceğiniz şöyle.

Konteyner başlıyor ancak web arayüzüne erişilemiyor

docker ps çalıştırırsınız ve konteynerin çalıştığını görürsünüz; ancak http://localhost:9001 hiçbir şey döndürmez veya zaman aşımına uğrar.

Bunu çözmek için önce konsol portunun doğru eşlendiğini kontrol edin:

docker port minio

9001/tcp -> 0.0.0.0:9001 görmelisiniz. Port 9001 listelenmiyorsa, docker run komutunuzda veya Compose dosyanızda eşlemeyi unutmuşsunuzdur.

Ayrıca MinIO loglarını kontrol edin:

docker logs minio

"Console: http://..." diyen satırı arayın — bu, MinIO’nun aslında hangi adreste dinlediğini söyler. Beklediğinizden farklı bir port görürseniz, --console-address bayrağınız hatalı olabilir.

Bağlanan birimlerde izin hataları

MinIO başlarken çöküyor veya /data konumuna yazmaya çalıştığında loglarda "permission denied" hataları görüyorsunuz.

MinIO işlemi konteyner içinde belirli bir kullanıcı olarak çalışır ve bu kullanıcının bağladığınız dizinde yazma iznine ihtiyacı vardır. Şununla düzeltin:

chmod -R 755 ~/minio/data

Veya Linux’ta konteyneri kendi kullanıcı kimliğinizle çalıştırın:

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

Diğer servislerle port çakışmaları

Konteyneri başlatırken "bind: address already in use" hatası alıyorsunuz.

Bu, 9000 veya 9001 portunu başka bir servisin zaten kullandığı anlamına gelir. Neyi kullandığını bulun:

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

# Windows
netstat -ano | findstr :9000

Ve MinIO’yu bunun yerine farklı ana makine portlarına eşleyin:

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

Artık API’ye localhost:9090, konsola ise localhost:9091 üzerinden erişin.

Kimlik bilgileri beklendiği gibi çalışmıyor

MINIO_ROOT_USER ve MINIO_ROOT_PASSWORD ayarladınız ancak giriş yapamıyorsunuz veya konteyner başlamıyor.

Çözmek için, ortam değişkenlerini gerçekten iletip iletmediğinizi kontrol edin:

docker inspect minio | grep -A 5 Env

Çıktıda MINIO_ROOT_USER ve MINIO_ROOT_PASSWORD arayın. Eksiklerse, -e bayraklarını ya da Compose dosyanızdaki environment: bölümünü atlamışsınızdır.

MinIO ayrıca parolaların en az 8 karakter olmasını gerektirir. Parolanız daha kısaysa konteyner bunu reddedebilir veya varsayılanı kullanabilir.

Mevcut bir kurulda kimlik bilgilerini değiştirdiyseniz, konteyneri tamamen durdurup kaldırın ve sonra sıfırdan başlatın:

docker stop minio
docker rm minio
docker run ...  # yeni kimlik bilgileriyle

Eski kimlik bilgisi dosyaları veri dizininizde kalmış olabilir ve çakışmalara neden olabilir.

Docker ile MinIO Çalıştırmada En İyi Uygulamalar

Yaygın hatalardan kaçınmak ve MinIO kurulumunuzu sürdürülebilir kılmak için şu uygulamaları izleyin.

  • Tekrarlanabilirlik için Docker Compose kullanın. Bir Compose dosyası tam yapılandırmanızı — portları, birimleri, ortam değişkenlerini ve komutları — belgelendirir. Sürüm kontrolüne alabilir, ekibinizle paylaşabilir ve farklı makinelerde birebir aynı kurulumları yeniden oluşturabilirsiniz. Kabuk geçmişinizden uzun docker run komutları çalıştırmak yapılandırma kaymasına ve hatalara yol açar.

  • Her zaman kalıcı depolamayı yapılandırın. Gerçek veri depolamadan önce bir birim veya bind mount eşleyin. Konteynerler geçicidir — bu adımı atlarsanız, konteyner yeniden başladığında her şeyi kaybedersiniz. docker inspect minio ile kurulumunuzu kontrol edin ve birim eşlemesinin doğru olduğunu doğrulayın.

  • Kimlik bilgilerini komut geçmişinden uzak tutun. Parolaları doğrudan docker run komutlarına koymayın veya Compose dosyalarınızda git’e işlemeyin. Docker Compose ile ortam dosyaları (.env) kullanın veya çalışma zamanında ortam değişkenleriyle iletin. .env dosyasını hemen .gitignore’a ekleyin.

  • Tek düğümlü modu yalnızca geliştirme için kullanın. Dağıtık mod karmaşıktır ve kurulum süresi uzundur. Dizüstü bilgisayarınızda yüksek erişilebilirlik veya erasure coding’e ihtiyacınız yok. Kesintinin gerçekten önemli olduğu üretim için dağıtık dağıtımları saklayın.

  • Başlangıç sırasında logları izleyin. MinIO’yu ilk kez başlatırken docker logs -f minio çalıştırın. Loglar, API uç noktasını, konsol URL’sini ve yapılandırma hatalarını gösterir. Bir sorun varsa, hiçbir şeyin neden çalışmadığını merak etmek yerine anında görürsünüz.

Bu uygulamaları takip ederseniz MinIO kurulumunuz ilk günden sağlam olacaktır.

Sonuç

Docker ile MinIO’yu çalıştırmak, bir dakikadan kısa sürede makinenizde S3 uyumlu nesne depolamaya sahip olabileceğiniz anlamına gelir.

Geliştirme, test ve küçük ölçekli projeler için Docker’da tek düğümlü MinIO ihtiyacınız olan her şeyi sunar. Tam S3 API uyumluluğu, yönetim için web konsolu ve bulut servislerine bağımlı olmadan veya kullanmadığınız depolama için ödeme yapmadan verileriniz üzerinde tam kontrol elde edersiniz.

Temellerle başlayın: kalıcı birimler ve güvenli kimlik bilgileri içeren basit bir docker run komutu veya bir Docker Compose dosyası (ikincisini tercih edin). Kurulumunuzu test edin, çalıştığını doğrulayın ve yalnızca gerçekten ihtiyaç duyduğunuzda karmaşıklık ekleyin.

Dağıtık mod, yüksek erişilebilirlik ve üretim düzeyinde yapılandırmalar bir nedenle vardır — ancak bu neden yerel geliştirme değildir. Üretime dağıtırken, kesinti size para kaybettirdiğinde veya kaybedilemeyecek verileri depoladığınızda bu kurulumlara geçin. O zamana kadar işleri basit tutun ve altyapıyı yönetmek yerine uygulamanızı geliştirmeye odaklanın.

Daha karmaşık Docker konularına dalmaya hazır olduğunuzda, Docker ve Kubernetes ile Konteynerleştirme ve Sanallaştırma kursumuza göz atın.

Dario Radečić

Yazar

Dario Radečić

Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

SSS

Yüksek eşzamanlı yüklemeler için MinIO performansını nasıl optimize edebilirim?

MinIO sunucunuzun eşzamanlı bağlantı kapasitesini MINIO_API_REQUESTS_MAX ortam değişkenini ayarlayarak artırın. Yüksek eşzamanlılık iş yükleri için, MinIO yükü kullanılabilir sürücülere otomatik olarak dağıttığından kurulumunuzda birden çok sürücü kullanmayı da düşünün. Dağıtık mod çalıştırıyorsanız, düğümler arasındaki ağ bant genişliğinin trafiği kaldırabildiğinden emin olun ve MinIO iletişimi için özel ağ arayüzleri kullanın.

Docker Compose ile MinIO kurarken en iyi uygulamalar nelerdir?

Üretime yakın kurulumlar için docker run komutları yerine her zaman Docker Compose kullanın; böylece yapılandırmanız tekrarlanabilir ve sürüm kontrollü olur. Kimlik bilgilerini ayrı bir .env dosyasında saklayın ve depoya girmemesi için .gitignore’a ekleyin. Kalıcı birimleri ana makinenizde ayrılmış dizinlere eşleyin, yeniden başlatma ilkelerini unless-stopped veya always olarak ayarlayın ve konteyner durumunu izlemek için healthcheck yapılandırmalarını ekleyin.

MinIO’yu TLS kullanarak güvenli erişim için nasıl yapılandırırım?

TLS sertifikaları oluşturun ve ana makinenizde bir dizine koyun, ardından bu dizini MinIO konteyneri içinde /root/.minio/certs konumuna bağlayın. MinIO, bu konumdaki sertifikaları otomatik olarak algılar ve başlangıçta HTTPS’i etkinleştirir. public.crt (sertifika) ve private.key (özel anahtar) dosyalarına ihtiyacınız olacak ve sertifikanın MinIO sunucunuzun ana makine adı veya IP adresiyle eşleşmesi gerekir.

MinIO ile diğer S3 uyumlu alternatifler arasındaki temel farklar nelerdir?

MinIO tamamen açık kaynaklıdır ve özellikle yüksek performanslı nesne depolama için tasarlanmıştır; birçok S3 uyumlu alternatif ise ya bulut servisidir ya da sınırlı özellik setine sahiptir. MinIO, AWS S3’ün yetenekleriyle eşleşen dağıtık erasure coding, versiyonlama, şifreleme ve yaşam döngüsü politikaları gibi özellikleri destekler. Bazı alternatiflerin aksine MinIO her yerde çalışır — bare metal, VM, konteyner veya Kubernetes üzerinde — ve sizi belirli bir bulut sağlayıcısına kilitlemez.

MinIO yedeklemelerini ve geri yükleme süreçlerini nasıl otomatikleştirebilirim?

MinIO istemcisini (mc) kullanarak, mc mirror source/ destination/ ile kovaları başka bir MinIO örneğine veya S3 uyumlu depolamaya yansıtan betikler oluşturun. Bu betikleri cron işleriyle zamanlayın veya MinIO’nun yerleşik kova çoğaltma özelliğini kullanarak verileri MinIO örnekleri arasında otomatik olarak senkronize edin. Geri yükleme için mc mirror’ı ters yönde kullanarak verileri yedek konumdan geri kopyalayın veya belirli kova ya da nesneleri geri almak için --recursive bayrağıyla mc cp kullanın.

Konular

İlgili