Docker Konteynerleri Başka Sunucuya Taşımak


Merhaba.

Geçtiğimiz günlerde yeni bir bulut sağlayıcısını denemeye karar verdim. Buna istinaden denemeleri yaptığımız sunucuyu taşımaya karar verdim.

Yeni hosting sağlayıcı 4 kat fazla ram ve NVMe depolama sağlıyor, bu kulağa hoş gelebilir ama karşılaştırma yapmak için çok erken, çünkü daha biz bu sağlayıcının stabilizesi ve sorunlara karşı tavrı hakkında daha herhangi bir bilgimiz bulunmuyor.

Yeni sunucu servislerimi barındırmak için hazır fakat içi boş. Servislerimin barındığı docker konteynerleri yeni sunucuya taşımam gerekiyor.

Hadi Konteynerleri Yeni Sunucuya Taşıyalım

Yedek Alın

Öncelikle ben kişisel olarak herhangi veri kaybına karşı sunucunuzu yedeklemenizi öneriyorum. Yedeğinizi bulut sağlayıcınız üzerinden yada kendi yöntemleriniz ile alabilirsiniz. Ben yedeğimi kendi yazılımım ile yaptım fakat size önermem içim çok erken.

Yedeğinizi aldıktan sonra herhangi bir sorun olmadığına karşın yedeğinizi kontrol edin.

Yeni Sunucuya Docker Kurun

Yeni sunucuya verilerinizi taşıman önce Docker’ı kurun. Eğer Docker’ı sunucunuza verileri taşımadan önce kurmazsanız ileride hatalar ile karşılaşabilirsiniz.

Bu hatalardan biri kurulum sırasında kurulum sihirbazının dosya çakışması ile karşılaşması ve kurulumu bitirememesi olabilir veya Kurulum yazılımı eski konteynır sisteminde değişiklik yapabilir ve buda sistemin çalışmamasına neden olabilir.

Yeni Sunucuda Konteyner Klasörünü Yedekleyin

Yeni sunucunuza docker kurduktan sonra varsayılan konteyner klasörünüz da oluşturulmuş olur. Bu klasöre ihtiyacımız olmadığından aşağıdaki komut ile yedekleriz.

mv /var/lib/docker /var/lib/docker-backup

rsync Kurulumu

Dosyaları kopyalamak için rsync uygulamasına ihtiyacımız var. Hem eski hem de yeni sunucunuza da rsync kurulu olması gerekiyor.

# Ubuntu, Debian
apt install rsync

# CentOS, Fedora, RedHat
yum install rsync

# Alpine
apk add rsync

Docker Servisini Durdurun

Eğer konteynerleriniz çalışır durumda olursa yedekleme sırasında dosyada bir değişiklik olursa bu yeni sunucunuza aktarılmaya bilir, bunu engellemek için eski sunucunuz da Docker servisini durdurun. Yeni sunucunuz da herhangi bir çakışmaya karşı docker servisini kesinlikle durdurmanız gerekiyor.

service docker stop

Konteynerlerin Taşınması

Şimdi konteynerlerimizi taşımak için hazırız. Taşıma için rsync uygulamasını kullanacağız. Aşağıda rsync de kullanacağımız seçeneklerin açıklamasını görebilirsiniz.

-a  archive
-v  increase verbosity
-z  compress file data during the transfer
-h  output numbers in a human-readable format
-p  preserve permissions
-e  specify the remote shell to use

Tüm konteynırlarımızı taşımak için tek bir komut yeterli olacaktır.

rsync -avzhp root@old-server-ip-or-domain:/var/lib/docker/ /var/lib/docker/

Eğer ssh için özel bir port kullanıyorsanız bu port -e seçeneği ile rsync tanımlamanız gerekiyor.

rsync -avzhp -e "ssh -p 1234" root@old-server-ip-or-domain:/var/lib/docker/ /var/lib/docker

Eski Sunucudaki Docker Ayar Dosyaları ve Kişisel yada Veri Dosyalarının Kopyalanması

Biz sadece konteynırlarımızı kopyaladık ama belki bazı verilerimiz yada bazı spesifik ayarlarımız eski sunucuda bulunabilir bunları da kopyalamanız gerekebilir.

Kopyalama işlemi için tekrardan rsync kullanacağız.

# Eğer root klasörünüzü kopyalamak isterseniz
rsync -avzhp root@old-server-ip-or-domain:/root/ /root

# Docker için özelleşitirilmiş ayarlarınız bulunuyor ise
rsync -avzhp root@old-server-ip-or-domain:/etc/docker/ /etc/docker

# Başka klasörleriniz varsa onları da komutu düzenleyerek taşıyabilirsiniz.

rsync -avzhp root@old-server-ip-or-domain:/my/custom/folder/ /my/custom/folder

Yeni Sunucuda Docker’ı Başlatın

Her şey neredeyse tamamlandı. Eğer özel bir durumunuz yok ise konteynırlarının çalışması için sadece bir komut yeterli.

service docker start

Docker servisiniz bu komut ile beraber çalışacaktır.

Unutmadan ekleyelim. Eğer diğer sunucunuz ile alakalı bazı özel network ayarlamaları var ise IPv6 konteynerler da kullanılması gibi bunu yeni sunucuda düzenlemeniz gerekir.

Okuduğunuz için teşekkürler.

For the english visit https://ahmetozer.org/Transport-All-Docker-Containers-to-New-Server.html


Dijitaller'in Sunucu ve Ağ altyapısını kuran, düzenleyen. Genel olarak teknoloji ve bilim ile uğraşmayı severim . Detaylı bilgi için https://ahmetozer.org. Lütfen sorularınızı Dijitaller.com Yorumlar veya Twitter üzerinden iletin.

2 Yorum

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

  1. İyi günler Ahmet bey bilgisayarım lenovo ıdeapad 310 ve disk kullanımı %100 oluyor yardımcı olurmusunuz. Özellikler: i5-7200u CPU @ 2.50 GHz 2.70 GHz RAM 4GB x64 bit Ekran kartı : NVIDIA GEFORCE 920M