Docker Container’larını yedeklemek ve yeniden yüklemek birçok senaryoda önem kazanır. Docker Container’larını yedeklemek için hangi yöntemleri kullanabiliriz? Yedekleme işlemi sırasında nelere dikkat etmeliyiz? Geri yükleme işlemi nasıl yapılır ve nelere dikkat etmeliyiz? Docker Container’larını yedekleme ve geri yükleme konusunda önerileriniz nelerdir?
Docker Container’larını Yedekleme ve Geri Yükleme
Docker container’larını yedeklemek ve geri yüklemek, uygulamalarınızın sürekliliği ve veri güvenliği için kritik bir adımdır. Bu süreçler, sisteminizde meydana gelebilecek herhangi bir aksilik veya veri kaybı durumunda verilerinizi koruma altına alır. Aşağıda Docker container’larını nasıl yedekleyeceğinizi ve geri yükleyeceğinizi adım adım anlatacağım.
Docker Container’ını Yedekleme
Başlamadan önce işlem yapacağımız container ID 'sine ihtiyacımız olacak. Eğer yedeklemek istediğiniz container’in container_id’sini bilmiyorsanız aşağıdaki komutu çalıştırarak çalışan containerleri listeleyin. Yedeklemek istediğiniz container in sırasında ki en başta yer alan ID container_id olacaktır.
sudo docker container ls
Örnek çıktı aşağıdaki gibi olacaktır, CONTAINER ID bölümü ihtiyacımız olan sütundur.:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1addfea727b3 mysql:5.6 "docker-en.." 2 seconds ago Up 1 second 0.0.0.0:32801->3306/tcp dazzling_hellman
09c4105cb356 nats:2.1.0-scratch "/nats-…" 17 minutes ago Up 17 minutes 4222/tcp, 6222/tcp, 8222/tcp nats-1
443fc0c41710 rabbitmq:3.7 "docker-…" 17 minutes ago Up 17 minutes 4369/tcp, 5671-5672/tcp, 25672/tcp rabbit-1
b06cfe3053e5 postgres:11 "docker-…" 29 minutes ago Up 29 minutes 0.0.0.0:32789->5432/tcp pg-2
4cf774b9e4a4 redis:5 "docker-…" 30 minutes ago Up 30 minutes 0.0.0.0:32787->6379/tcp redis-2
Yöntem 1: Docker Commit ve Save Kullanımı
1 - Container’ı Kaydetme (commit): İlk adım, yedeklemek istediğiniz Docker container’ını kaydetmek (commit) ve bir imaj haline getirmektir. Bu, container’da çalışan işlemlerin anlık bir görüntüsünü (snapshot) almanızı sağlar.
docker commit container_id container_yedek_adı
## Örnek: docker commit 1addfea727b3 docker_mysql_yedek
2 - Imajı Kaydetme: Daha sonra, oluşturduğumuz imajı .tar
formatında kaydetmek için docker save
komutunu kullanırız.
docker save -o container_yedek_adı.tar container_yedek_adı
## Örnek: docker save -o docker_mysql_yedek.tar docker_mysql_yedek
Bu yöntem, container’ın tam bir kopyasını yedekler, ancak uzun vadeli ve büyük veri yedeklemeleri için ideal olmayabilir.
Yöntem 2: Docker Volume’leri ile Yedekleme
1 - Volume Bilgilerini Görme: İlk olarak, yedeklemek istediğiniz container’a bağlı volume’leri listelemelisiniz.
docker inspect container_id
## Örnek: docker inspect 1addfea727b3
2 - Volume’leri Yedekleme: Daha sonra, bu volume’leri doğrudan yedekleyebilirsiniz. Volume’ler genelde Docker host’un /var/lib/docker/volumes/
dizini altında saklanır.
sudo tar czf volume_yedek.tar.gz /var/lib/docker/volumes/volume_adı/_data
Bu yöntem, özellikle container’ınızın durumunu değil, sadece verilerini yedeklemek istiyorsanız uygundur.
Docker Container’ını Geri Yükleme
Yöntem 1: Docker Load ve Create Kullanımı
1 - Imajı Geri Yükleme: Kaydettiğiniz imajı Docker’a geri yükleyin.
docker load -i container_yedek_adı.tar
## Örnek: docker load -i docker_mysql_yedek.tar
2 - Container Oluşturma: Yüklenen imajdan yeni bir container oluşturun.
docker create --name yeni_container_adı container_yedek_adı
## Örnek: docker create --name yeni_container_adı docker_mysql_yedek
Yöntem 2: Docker Volume’leri ile Geri Yükleme
1 - Eski Volume’leri Silme: Gerekirse, mevcut volume’leri silin.
docker volume rm volume_adı
2 - Yeni Volume Oluşturma: Yedekten geri yüklemek için yeni bir volume oluşturun.
docker volume create volume_adı
3 - Verileri Geri Yükleme: Yedek dosyasından verileri yeni volume’e kopyalayın.
sudo tar xzf volume_yedek.tar.gz -C /var/lib/docker/volumes/volume_adı/_data
Dikkat Edilmesi Gerekenler
- Uyum Sorunları: Eski bir container yedeğini daha yeni bir Docker sürümünde geri yüklemeye çalışırken uyum sorunlarına dikkat edin.
- Gizlilik ve Güvenlik: Yedekleri güvenli bir yerde saklayın ve hassas verileri korumak için şifreleme kullanmayı düşünün.
- Otomasyon: Yedekleme ve geri yükleme süreçlerini otomatize etmek, süreklilik ve veri güvenliği stratejisinin önemli bir parçası olmalıdır.
TERİMLER:
Container (Konteyner): Uygulamaların kütüphaneleri ve bağımlılıkları ile birlikte paketlendiği izole edilmiş ortamlar.
Imaj: Bir Docker container’ının çalıştırılabilir bir kopyası.
Volume: Docker container’ları tarafından kullanılan, verileri saklamak için kullanılan bir kaynak.