Docker birimleri, kalıcı verileri kapsayıcılarınızdan ayrı depolamak için kullanılır. Bir birime kaydedilen verilere, kapsayıcılarınız durduktan sonra da erişilebilir durumda kalarak durum bilgisi olan iş yüklerini depolamanıza olanak tanır.
Hacimler kaplarda kalsa da bu, üretim uygulamaları için yeterli koruma değildir. Bir felaketten sonra geri yükleyebilmek için birimleri yedeklemelisiniz. Düzenli birim yedeklemeleri, Docker ana bilgisayarınız tehlikeye girerse veya veriler yanlışlıkla silinirse ortamınızı geri yüklemenize yardımcı olabilir.
Yedekleme boyutunu yönet
Docker, birimleri yedeklemek veya içeriklerini dışa aktarmak için yerleşik bir mekanizmaya sahip değildir. Birime erişmek ve verileri yedekleme hedefine kopyalamak için kendi çözümünüzü kurmanız gerekir.
Yedeklemek istediğiniz birimi bağlayacak geçici bir kapsayıcı oluşturmak genellikle en kolay yoldur. Ekle . lütfen --volumes-from
a bayrak docker run
Mevcut bir kapsayıcıdaki birimleri otomatik olarak yedekleme kapsayıcınıza bağlama komutu. Daha sonra aşağıdaki gibi araçları kullanabilirsiniz: tar
E gzip
Çalışma kitabınıza bir cilt içeriği arşivi eklemek için.
İşte bu tekniğin tam bir örneği:
# Create a container that stores data in the "mysql_data" volume
docker run -d \
--name mysql \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql \
mysql:8
# Start a temporary container to back up the "mysql_data" volume
docker run --rm \
--volumes-from mysql
-v $PWD:/backup-dir \
ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql
bu --volumes-from
Bayrak, geçici yedekleme kapsayıcısına erişim izni verildiği anlamına gelir. mysql
konteyner boyutları. bu /var/lib/mysql
Yedekleme kutusundaki dizin, sürücü tarafından kullanılan yol olduğu için birimin içeriğini gösterir. mysql
Konteyner. Yolun belirtilmesi, klasörünüzün yedek olarak kullanabileceğiniz bir arşivini oluşturur. tarafından ayarlanan bağlama kancası nedeniyle çalışma kitabınızda ciltlenecektir. -v
Bilim.
bu --rm
Bayrak, komut tamamlandığında yedekleme kapsayıcısını siler. Bu, arşivi çalışma kitabınızdaki uzun süreli depolamaya aktarılmaya hazır bırakır. Yedeklemeleri otomatikleştirebilirsiniz. docker run
bir cron işi olarak komut.
Yedeklemenizi geri yükleyin
Yedeklemenizi geri yüklemek için benzer bir yöntem kullanabilirsiniz. Mevcut bir birimin içeriğini değiştirdiğinizde, birimi içeren başka bir geçici kapsayıcı ve yedekleme arşivine bir yükleme bağlantısı oluşturursunuz. Arşivin içeriğini birim bağlama yoluna çıkarın.
$ docker run --rm \
--volumes-from mysql
-v $PWD:/backup-dir
bash -c "cd /var/lib/mysql && tar xvf /backup-dir/mysql-backup.tar"
Konteynerler aktif olarak hacim kullanıyorsa bu riskli olabilir. Kullanımdaki dosyaların üzerine yazmak, hatalara ve beklenmeyen davranışlara neden olabilir. kullanabilirsiniz docker stop
Kullanarak yeniden yükseltme yapmadan önce kapsayıcılarınızı duraklatma komutu docker start
.
$ docker stop mysql
# Restore the backup
# ...
$ docker start mysql
Yeni bir ana bilgisayara geri yüklüyorsanız, kapsayıcınızı başlatmadan önce birimi oluşturun:
$ docker volume create new_volume
Ardından bu klasörü geçici kabınıza bağlayın:
docker run --rm \
-v new_volume:/var/lib/mysql
-v $PWD:/backup-dir \
ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql
Uygulama kapsayıcısını aynı boyutta başlatmak, kurtardığınız dosyalara erişmenizi sağlar:
docker run -d \
--name mysql \
-v new_volume:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql \
mysql:8
Bu prosedürleri test ederek herhangi bir felaketle karşılaşmanız durumunda yedeklerinizin kullanılabilirliğini kontrol edebilirsiniz.
Klasörleri doğrudan yedekleyin
Yukarıdaki prosedür, Docker klasörlerini yedeklemek için önerilen yoldur. Bununla birlikte, bazı durumlarda, içeriği doğrudan sunucunuzun dosya sistemindeki birimlerin depolandığı yerden kopyalayarak daha iyi hizmet verilebilir.
Klasörlerinizin içeriğini genellikle şu adreste bulabilirsiniz: /var/lib/docker/volumes
. Her klasör şu şekilde kendi alt klasörünü alır: /var/lib/docker/volumes/mysql
. Bu üst düzey pistte bir _data
Birimde depolanan tüm dosyaları içeren klasör.
Arşiv /var/lib/docker/volumes
Bir dizin, sunucunuzdaki her şeyi hızlı bir şekilde yedeklemenin yararlı bir yolu olabilir. dosyaları kullanmalısın sudo
Bu yoldaki her şey sahibine ait olsa da root
.
Bu yedekleme yöntemi, kurulumlar arasında aktarılamadığından normal kullanım için önerilmez. Docker’ın toplu işletim sistemi, toplu verilerin ana bilgisayarınızın dosya sisteminde depolanması gerekmediği anlamına gelir; bu, bir ağ paylaşımında veya başka bir uzak konumda olabilir. Bu teknik, yalnızca belirli bir cihazda bakım yapmadan önce hızlı bir yedekleme istiyorsanız denenmelidir.
genel bakış
Docker klasörleri, uygulamanız için statik veriler içerdiklerinden dikkatle kullanılmalıdır. Düzenli yedeklemeler oluşturmak, ana bilgisayarınız tehlikeye girerse veya hatalı bir kapsayıcı işlemi yanlışlıkla dosyaları silerse sizi veri kaybından korur.
Docker kurulum klasörünü arşivleyerek yedeklemeler oluşturabilirsiniz ancak mümkün olduğunca bundan kaçınılmalıdır. Geçici yedekleme kapsayıcıları kullanışsız gelebilir, ancak kolayca betiklenebilirler ve tüm birim sürücüler için öngörülebilir sonuçlar sağlarlar.
Bir birim yedekleme arşivi oluşturduktan sonra, mümkün olan en kısa sürede harici depolamaya bağladığınızdan emin olun. Geldiği bilgisayarda depolanan bir yedekleme, erişimin kaybedilmesi veya bir donanım arızası meydana gelmesi durumunda yardımcı olmaz.
kaynak bağlantı
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın