2015-07-24 13 views

cevap

49

Uyarı iletisi, Docker depolama yapılandırmanızın dosya sisteminizdeki bir dosya tarafından desteklenen bir "geridönüş aygıtı" - /dev/loop0 gibi bir sanal blok aygıtı kullanması nedeniyle oluşur. Bu, Docker'ı bir kavram kanıtı olarak çabucak koşturmak için çabuk bir hack'den başka bir şey değildi.

Sen bastırmak uyarı istemiyoruz; Depolama yapılandırmanızı, uyarı verilmeyecek şekilde düzeltmek istiyorsunuz. Bunu yapmanın en kolay yolu Docker's devicemapper depolama sürücüsünün kullanımı için bazı yerel disk alanı atamak ve bunu kullanmaktır.

Eğer LVM kullanarak ve hacim grubunda bulunan bazı boş alana sahip ediyorsanız, bu nispeten kolaydır.

DOCKER_STORAGE_OPTIONS=-s devicemapper --storage-opt dm.datadev=/dev/my-vg/docker-data --storage-opt dm.metadatadev=/dev/my-vg/docker-metadata 

Eğer': benzemeye /etc/sysconfig/docker-storage düzenleyerek bu alanı kullanmak üzere Docker yapılandırmak sonra

# lvcreate -n docker-data -L 100G /dev/my-vg 
# lvcreate -n docker-metadata -L1G /dev/my-vg 

Ve: Örneğin, ilk veri ve meta veri birimi oluşturmak, uzayın liman işçisi 100g vermek LVM'yi kullanmamanız veya VG'nizde boş alan yoksa, başka bir blok cihazını (örn., bir yedek disk veya bölüm), Docker'a benzer bir şekilde gösterebilirsiniz.

bu konu here bazı ilginç notlar vardır.

+0

teşekkür ederiz. Bence docker deposuyla ilgili daha fazla şey öğrenmeliyim ve bir test yaptırmalıyım. – rocksun

+1

Ayrıca [mevcut depolama seçenekleri bu anketi] (http://developerblog.redhat.com/2014/09/30/overview-storage-scalability-docker/) ilginç bir okuma bulabilirsiniz. – larsks

+1

Eh, biri yeterli bellek (bıçaklarda 100+ GB) varsa ve çalışmayı tamamladığında (genellikle CI sistemlerinde olduğu gibi) belirli bir işi yapan geçici birimler olarak docker host'larına davranıyorsa, uygun bir seçenek. RAM'i hileli bir hızlı disk olarak kullanmak çok zorlayıcıdır. – allprog

3

teşekkürler. Bu beni deli ediyordu. Bash'ın bu mesajı çıkardığını sanıyordum. Bash'a karşı bir böcek göndermek üzereydim. Ne yazık ki, sunulan seçeneklerden hiçbiri bir dizüstü bilgisayarda veya diskin tamamen kullanıldığı yerlerde geçerli değildir. İşte bu senaryo için cevabım. İşte

benim laptop/etc/sysconfig/liman işçisi-depolamada kullanılan budur:

DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true" 

Not: Ben bir etkiye sahip olmak için bu için liman işçisi hizmetini yeniden gerekiyordu. Sadece bir yeniden başlatma komutu (systemctl restart docker) da vardır

systemctl stop docker 
systemctl start docker 

, ama emin durdurma gerçekten tekrar başlatmadan önce çalışmış olmak için kontrol etmek iyi bir fikirdir: Fedora üzerinde bunun için komuttur.

SELinux'u kapsayıcınızda devre dışı bırakmayı düşünmüyorsanız, başka bir seçenek kaplamayı kullanmaktır.İşte o tamamen açıklayan bir link: Özetle

http://www.projectatomic.io/blog/2015/06/notes-on-fedora-centos-and-docker-storage-drivers/

/etc/sysconfig/docker için:

OPTIONS='--selinux-enabled=false --log-driver=journald' 

ve/etc/sysconfig/liman işçisi-depolama için:

DOCKER_STORAGE_OPTIONS=-s overlay 

Bir depolama türünü değiştirdiğinizde, docker'ı yeniden başlatmak tüm resminizi ve kapsayıcı deposunuzu yok edecektir. Bu,/var/lib/liman işçisi klasöründe de her şey yapıyor olabileceği durumlarda:

RHEL 6.6 benim özel anahtarlara erişmek ve en önemsiz ile root olarak uygulamaları çalıştırabilir liman işçisi erişimi olan bir kullanıcı olarak
systemctl stop docker 
rm -rf /var/lib/docker 
dnf reinstall docker 
systemctl start docker 

hacimleri üzerinden hack. SELinux, Fedora ve RHEL 7'de bunu önleyen tek şeydir. Bu, ek RHEL 7 güvenliğinin ne kadarının SELinux'tan konteynerin dışından geldiğini ve ne kadar konteynerin içinde bulunduğunu açık bir şekilde belirtmemiştir ...

Genel olarak, geridönüş aygıtları, 100GB maksimum sınırın ve biraz azaltılmış performansın sorun olmadığı durumlarda iyidir. Bulabildiğim tek sorun, çalışırken tam bir diskiniz varsa docker deposu bozuk olabilir ... Bu muhtemelen kotalarla veya diğer basit çözümlerle önlenebilir. Bununla birlikte, bir üretim örneği için, bunu doğru bir şekilde ayarlamak için zaman ve çabaya değerdir.

100G, üretim örneğiniz için aşırı olabilir. Kaplar ve görüntüler oldukça küçük. Pek çok kuruluş VM'ler içinde docker konteynırlarını ek güvenlik ve izolasyon ölçüsü olarak kullanıyor. Eğer öyleyse, VM başına çalışan çok az sayıda kapsayıcıya sahip olabilirsiniz. Bu durumda 10G bile yeterli olabilir.

Son bir not. Doğrudan lvm kullanıyor olsanız bile, muhtemelen/var/lib/docker için ek bir dosya sistemi isteyebilirsiniz. Nedeni, "docker yüklemesi" komutunun, veri deposuna eklemeden önce bu klasöre yüklenen görüntülerin sıkıştırılmamış bir sürümünü oluşturacağıdır. Dolayısıyla, küçük ve hafif tutmaya çalışıyorsanız, doğrudan lvm dışındaki seçenekleri keşfedin.

+0

Makinemde **/etc/sysconfig/docker-storage ** bile yok. Onu nasıl aldın? –

+0

evet ... bende ... –

0

@Igor Ganapolsky Şubat ve Minca Daniel Andrei @

Kontrol bu:

systemctl edit docker --full

yönerge EnvironmentFile[Service] blokta yer almıyorsa, o zaman hiç şans (Ben de Centos7 üzerinde bu sorun var), ancak bu gibi standart systemd birimini uzatabilirsiniz:

systemctl edit docker EnvironmentFile=-/etc/sysconfig/docker ExecStart= ExecStart=/usr/bin/dockerd $OPTIONS

Ve içeriğe sahip bir dosya /etc/sysconfig/docker oluşturun:

OPTIONS="-s overlay --storage-opt dm.no_warn_on_loop_devices=true"

İlgili konular