İlk olarak, Docker'ın son sürümleri named volumes'u oluşturmanıza ve kullanmanıza izin verir. Bu, "yalnızca veri içeren kapların" eskitildiği ve artık gerekli olmadığı ve aslında bu günlerde anti-örüntü olarak kabul edildiği anlamına gelir. Sen ile hacimleri görüntüleyebilir
docker volume create --name=foo
docker run -d -v "foo:/dbdata" --name "db1" x/mysql
: Bu oluşturmak ve adlandırılmış hacmi kullanmak oldukça basit olduğunu Bildiğim kadarıyla ana soru olarak
docker volume ls
, hangi da olabilir (Docker en union filesystem yararlanmak olabilir daha basit bir "paylaşılan katman" olarak adlandırılır) tasarım. Bunun anlamı, ubuntu görüntüsünden iki kapsayıcı (ör. docker run -d --name=one ubuntu
ve docker run -d --name=two ubuntu
) oluşturursanız, bu kapların her ikisi de temel ubuntu görüntüsünde aynı dosya sistemi nesnelerini kullanacaklardır. Örneğin, bu kapların her ikisinde de /etc/passwd
dosyası, diskte saklanan aynı /etc/passwd
verisine işaret eder. Bu, Docker bağlamında "sendika dosya sistemi" terimi ile kastedilenin bir parçasıdır.
Bu bilgiyi bir adım ileriye götürün ve bu modülleri, farklı müşterileriniz için tüm kapların kullanımı için temel görüntünüze "fırlatın". Bunun anlamı, üstte FROM wordpress:latest
kullanan Dockerfile'dan kendi resminizi oluşturmanızdır. WordPress örneğiyle devam edersiniz ve bir grup WP eklentisi yapmak isterseniz, bunları yalnızca /var/www/html/wp-plugins
(veya herhangi bir şekilde) içinde saklayabilir ve yalnızca yapılandırmanızda belirli olanları etkinleştirebilirsiniz. Oluşturduğunuz görüntüye işledikleri için (ve tüm farklı kaplarınızı oluşturmak için aynı görüntüyü kullandıkları için), tüm bu modül dosyaları, birleşik dosya sistemi aracılığıyla diskte saklanan aynı veriyi işaret eder. Elbette, eğer birisi modülden birinde kodu değiştirirse, örneğin, münferit muhafazanın resmi, değişiklikleri kendi görüntü katmanında saklar, ancak temel dosyalar, herhangi bir ekstra alan açmamakla aynı verilerden olacaktır. Elbette, kullandığınız CMS'yi değiştirebilirsiniz.
Şimdi, çalıştığım yerde, son zamanlarda insanların kullanması için Docker tabanlı bir barındırma sistemi oluşturdum. Sorun, her müşterinin CMS dosya sisteminin kendi kopyasına sahip olmasını istedik.Birleştirme dosya sistemi olsa bile, baz görüntündeki değişiklikler kendi görüntü katmanlarında saklanır, bu maaşımı imzalayan adam için yeterince iyi değildi. Her müşterinin, kendi CBS dosya sisteminin kendi kopyasıyla kendi EBS hacmine sahip olmasını istediler. Bu durumda, her müşterinin kendi hacmine sahip olmasını istediğiniz yerde (örneğin, onları yedekleme için taşımak veya yeni bir ana bilgisayara, vb. Taşımak için), o zaman sorunu çözemezsiniz. bu dosyalar için ekstra depolama kullanmanın.
Bu bir çeşit CMS'dir –