- Tamamen güvenli bir Docker konteynerini başka bir sunucuya nasıl taşıyabilirim?
- Genel bilgiler ve ön koşullar
- Yedekleme ve Taşıma Stratejileri — Doğru Yöntemi Seçmek
- Senaryo 1 — Yerel imaj ve adlandırılmış disk birimi (ör. web uygulaması + MySQL)
- Senaryo 2 — Bağlantı noktası (ana klasör) içeren kapsayıcı
- Senaryo 3 — Hassas Veritabanları için Kesintisiz Geçiş
- Transfer seçeneklerinin karşılaştırılması (avantajları/dezavantajları)
- Güvenlik İpuçları (Çok Önemli)
- Büyük veri için pratik ipuçları ve optimizasyon
- Docker uyumluluğu ve sürümleri
- Taşıma işlemi için konum ve sunucu türü seçimi
- Örnek: Docker-compose ile Web + MySQL geçişi
- Devreye alma öncesi son kontrol listesi
- Sıkça Sorulan Sorular
Tamamen güvenli bir Docker konteynerini başka bir sunucuya nasıl taşıyabilirim?
Bir Docker konteynerinin eksiksiz yedekleme ve taşıma işlemi üç ana bileşeni içerir: görüntü, veri (birimler veya bağlama noktaları) Ve Yapılandırma/Meta Veriler. Bu adım adım kılavuz, kapsayıcılaştırılmış hizmetlerin (web uygulamaları ve veritabanları dahil) taşınması için güvenli, hatasız ve geri alınabilir yöntemleri açıklamaktadır.
Genel bilgiler ve ön koşullar
Başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:
- SSH erişimi Her iki sunucuya da uygun kullanıcı veya root yetkisiyle erişin.
- Kaynak ve hedef sistemlere Docker'ı (ve gerekirse docker-compose'u) kurun. Hızlı kurulum örneği:
curl -fsSL https://get.docker.com | sh
# or follow your distribution guide- Arşivler için yeterli disk alanı olup olmadığını kontrol edin.
- Güvenli aktarım için SSH anahtarı ve benzeri araçlar rsync Veya SCP-1811.
- Hizmet kesintisi planlaması veya düşük gecikmeli yöntemler için hazırlık.
Kontrol edilecek ilk komutlar:
docker ps -a
docker volume ls
df -h
du -sh /var/lib/docker/volumes/*Yedekleme ve Taşıma Stratejileri — Doğru Yöntemi Seçmek
Tam bir geçiş için üç temel bileşen:
- Görüntü Konteyner (kod/ikili dosyalar)
- Kararlı veriler (ciltler veya ciltli kitaplar)
- Konfigürasyonlar ve meta veriler (docker-compose.yml, ortam dosyaları, ağlar, gizli bilgiler)
Yaygın yöntemler:
- docker export / docker import: Kapsayıcı dosya sistemini içerir ancak meta verileri ve adlandırılmış birimleri aktarmaz.
- docker save / docker loadOluşturulan görseller için uygundur.
- Yedeklenen birimler Tar dosyası olarak arşivleyin ve rsync/scp ile aktarın veya S3'e yükleyin.
- Özel bir kayıt defteri kullanmak İtme/çekme görüntüleri için.
- Yönetim araçlarını kullanın. Docker-compose veya Kubernetes gibi araçlar kullanarak servisi tanımlamalarla yeniden oluşturabilirsiniz.
Senaryo 1 — Yerel imaj ve adlandırılmış disk birimi (ör. web uygulaması + MySQL)
Varsayım: Web konteyneri ve mysql_data adlı bir birime sahip MySQL veritabanı. Adımlar sırasıyla:
1) Konteyner görüntüsünü alma
Yerel bir imajınız varsa veya kapsayıcıda değişiklikler yapıldıysa, öncelikle imaj adını ve kapsayıcı kimliğini bulun ve gerekirse kapsayıcıyı kaydedin.
docker ps --no-trunc --format '{{.Image}} {{.ID}}'
docker commit CONTAINER_ID myapp:backup-2026-07-14
docker save -o /tmp/myapp_backup_image.tar myapp:backup-2026-07-142) Adlandırılmış birim yedeklemesi
Ana bilgisayarda disk içeriğini sıkıştıran (tar) yardımcı bir konteyner kullanan güvenli yöntem:
docker run --rm \
-v mysql_data:/data \
-v /tmp/backup:/backup \
ubuntu \
bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."Büyük veri kümeleri için zstd gibi daha hızlı bir sıkıştırma aracı kullanabilirsiniz:
docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar -I 'zstd -19' -cf /backup/mysql_data.tar.zst ."3) Veritabanı yedeklemesi (tercih edilen)
Veritabanı tutarlılığını ve bütünlüğünü sağlamak için mantıksal bir döküm almak en iyisidir:
docker exec CONTAINER_ID sh -c 'exec mysqldump --all-databases --single-transaction -u root -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all_databases.sqlAçıklama: Bu yöntem, disk dosya sistemine olan bağımlılığı ortadan kaldırır ve sağlıklı bir mantıksal döküm oluşturur.
4) Hedef sunucuya aktarın
Özellikle büyük dosyalar için güvenli ve kesintisiz aktarımlar için rsync kullanılması önerilir.
rsync -avP -e "ssh -p 22" /tmp/myapp_backup_image.tar user@target:/tmp/
rsync -avP -e "ssh -p 22" /tmp/mysql_data.tar.gz user@target:/tmp/Veya scp ile daha basit:
scp /tmp/myapp_backup_image.tar user@target:/tmp/Not: Büyük veri transferleri için `rsync --partial --progress` komutunu veya S3/MinIO'ya `rclone` gibi araçları kullanın.
5) Hedef sunucuya geri yükle
Görüntüyü yükleyin ve birimi geri yükleyin, ardından docker-compose ile servisi başlatın:
docker load -i /tmp/myapp_backup_image.tar
docker volume create --name mysql_data
docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar xzf /backup/mysql_data.tar.gz"SQL dökümü kullandıysanız, geçici bir MySQL konteyneri oluşturun ve içe aktarma işlemini gerçekleştirin:
docker run --name mysql-temp -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql:8
cat /tmp/all_databases.sql | docker exec -i mysql-temp sh -c 'mysql -u root -p"$MYSQL_ROOT_PASSWORD"'Ardından docker-compose.yml ve env dosyalarını yerleştirin ve servisi başlatın:
docker-compose -f docker-compose.yml up -d6) Test ve inceleme
Günlükleri, veri bütünlüğünü ve sağlama toplamlarını kontrol etmeyi unutmayın:
docker logs -f CONTAINER
sha256sum /tmp/mysql_data.tar.gz
sha256sum /tmp/backup/mysql_data.tar.gzSenaryo 2 — Bağlantı noktası (ana klasör) içeren kapsayıcı
Eğer konteyner bind mount kullanıyorsa (örneğin, ana bilgisayarda /srv/app/data), ana bilgisayar yolunu rsync veya tar ile kopyalayın, hedefte aynı yolu hazırlayın ve konteyneri başlatın.
rsync -avP -e "ssh" /srv/app/data/ user@target:/srv/app/data/Ardından, hedefteki konteyneri aynı bağlama yoluyla başlatın.
Senaryo 3 — Hassas Veritabanları için Kesintisiz Geçiş
Hizmet kesintilerini azaltmak için:
- Çoğaltma (MySQL replikasyonunu veya PostgreSQL akışını) uygulayın ve senkronizasyondan sonra geçişi gerçekleştirin.
- Başlangıç ve son rsync: Büyük veri dosyaları için ilk rsync işlemi, ardından küçük değişiklikleri senkronize etmek için –inplace ve –delete seçenekleriyle son rsync işlemi.
rsync -azP --delete --inplace /var/lib/docker/volumes/mysql_data/_data/ user@target:/var/lib/docker/volumes/mysql_data/_data/Son rsync işleminden sonra, servisi birkaç saniye durdurun ve ardından hedef sunucuda tekrar başlatın.
Transfer seçeneklerinin karşılaştırılması (avantajları/dezavantajları)
- docker kaydet/yükleGörseller için hızlıdır, ancak hacimleri içermez.
- docker export/import: Kapsayıcı dosya sistemini içerir ancak meta verileri ve birimleri kaybeder.
- birimler üzerinde rsyncHassas kontrol ve yeniden başlatma imkanı sunar, ancak yönetim ve test gerektirir.
- Mantıksal veritabanı dökümü: Farklı veritabanı sürümleri arasında geçiş için güvenilir ve uygundur.
- Özel kayıt defteri: Görüntülerin birden fazla sunucuya dağıtılması için en iyi uygulama; kalıcı veriler ayrı olarak aktarılmalıdır.
Güvenlik İpuçları (Çok Önemli)
İşte bazı pratik güvenlik ipuçları:
- SSH'yi korumalı özel anahtar ve erişim kısıtlamalarıyla kullanın.
- İletimden önce hassas verileri aşağıdaki gibi araçlarla koruyun: gpg Veya yaş Şifreleyin. Örnek:
gpg --encrypt --recipient [email protected] /tmp/mysql_data.tar.gzAktarım işleminden sonra, dosyaların bütünlüğünü her zaman şu şekilde doğrulayın: sha256sum Kontrol etmek.
Hedef sunucuda, hizmeti başlatmadan önce güvenlik duvarını ve port kısıtlamalarını kontrol edin ve gerekirse sıkı erişim kısıtlamaları ayarlayın.
Büyük veri için pratik ipuçları ve optimizasyon
- Sıkıştırma Uygun seviyeyle zstd veya gzip kullanarak: tar -I 'zstd -19' -cf backup.tar.zst /data
- Bağlantı不稳定 olduğunda devam etmek için rsync'i --partial parametresiyle kullanın.
- Birden fazla terabaytlık veri aktarımı için, fiziksel disk göndermeyi veya hedef konuma yakın nesne depolama kullanmayı düşünün.
Docker uyumluluğu ve sürümleri
Taşıma işlemine başlamadan önce kaynak ve hedef Docker sürümlerini kontrol edin. Genellikle imajlar uyumludur, ancak Compose veya sürücülerdeki bazı yeni özellikler uyarlama gerektirebilir.
Taşıma işlemi için konum ve sunucu türü seçimi
Veri merkezi konumu ve sunucu türü seçimi uygulamaya bağlıdır:
- Alım Satım ve Forex: En düşük ping için Exchange sunucularına yakın konum.
- Oyun: Avrupa/ABD'de veya DDoS saldırılarına karşı koruma sağlayan oyunculara yakın uygun konumlar.
- Yapay Zeka ve Görselleştirme: Yüksek G/Ç performansı için GPU ve NVMe sunucuları.
- Web siteleri: CDN destekli ve ana kullanıcılara yakın konumda bulunan bulut sunucusu.
Şirketimiz, çeşitli geçiş ihtiyaçlarını karşılayabilecek 85'ten fazla küresel lokasyon, GPU sunucuları ve BGP ağ altyapısı sunmaktadır.
Örnek: Docker-compose ile Web + MySQL geçişi
Adımların özeti:
- Docker-compose yapılandırmasının ve yerel imaj oluşturma işleminin çıktısı:
docker-compose -f docker-compose.yml config > /tmp/compose_config.yml
docker-compose build
docker save $(docker-compose images -q web) -o /tmp/web_image.tar- Yedekleme birimleri:
docker run --rm -v project_mysql:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."- Dosyaları rsync kullanarak hedef konuma aktarın, ardından hedef konumda geri yükleyin ve docker-compose komutunu çalıştırın.
Devreye alma öncesi son kontrol listesi
- Görüntü ve disk birimleri yedeklendi ve sağlama toplamı doğrulandı.
- Ortam ve sırlar güvence altına alınır veya kasaya konulur.
- Docker ve Compose sürümleri kontrol edildi.
- Hedef ağ ve güvenlik duvarı yapılandırıldı.
- Geri alma senaryosu tanımlanmıştır.
- Kesin program açıklandı ve izleme sistemi hazır.









