Docker Container'ı nasıl yedeklenir ve geri nasıl yüklenir?

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?

1 Beğeni

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.