2015-06-30 7 views
5

ZooKeeper'ı çalıştıran bir kapsayıcıyla çalışıyorum ancak yerleştirdiğim ana bilgisayar birimlerinde izinlerle ilgili sorunlara koşuyorum Konteynere Ana makinede OnKök dışı bir kullanıcı olarak kapsayıcının içinden gelen bir birime yazmak istediğinizde sorun

(Ubuntu 14.04): Bir "Görevli" Sistem kullanıcıyı (id = 106) ve grup (id = 111) oluşturuldu

  • Bu benim kurulduğundan.

  • "/ var/log/zookeeper" dizinini oluşturup sahipliğini zookeeper'e (ör. Chown zookeeper: zookeeper) ayarlayın. Bu benim konteynere takacağım dizin. kap içinde

(Ubuntu 14.04): ı bir kullanıcı olarak kullanmak

  • da bir "Yaupon" Sistem, kullanıcının yarattığı (id = 102), ve grup (id = 105) olan komutunu ENTRYPOINT içinde yürütmek için.
  • "/ var/log/zookeeper" dizini ile aynı dizini oluşturun ve aynı zamanda sahipliğini zookeeper'e (zookeeper) ayarlayın: zookeeper (bunun önemli olduğunu düşünmüyorum). (Bu konteynerin içinde oluşturulan), ben rahat ediyoruz ben mount/var/log/zookeeper ile benim konteyner başlatıp ben Yaupon kullanıcı olarak kabın içine bir kabuk açar açmaz

Bağlı dizinde/var/log/zookeeper dosyasında bir dosya oluşturmaya çalışırsam "İzin Reddedildi" hatası.

drwxr-xr-x 2 106 111 4096 Jun 30 17:18 zookeeper 

106 ve bu durumda 111 Yaupon kullanıcısına karşılık ve: Ben bir "ls -l" ne zaman o şuna benzer (hala kabın içinde) bu dizinin sahipliği bakmak konunun nerede olduğunu düşündüğüm ana makinenin grup kimlikleri. Kapsayıcının içinde bir kabuk açmayı denedim, ancak bu sefer kök kullanıcı olarak girdiğim ve yukarıda anlattığım senaryo tam olarak gayet iyi çalıştı ve bu kök, oluşturulan dosyanın sahibiydi (beklenen). İhtiyacım olduğu sonucuna Bundan

ya:

(a) çalıştırın bunun yerine oluşturmak Yaupon kullanıcının varsayılan kök kullanıcı olarak benim kabın içine uygulama.

(b) Hem ana bilgisayarımda hem de kimlikleri tam olarak aynı olan kapsayıcının içinde bir zookeeper kullanıcısı ve grubu oluşturun.

Ne durumda idealdir çünkü için (a), olası güvenlik sorunları olabilir kök kullanıcı olarak uygulamayı çalıştıran (I zaten okuduklarıma) ve (b), çok olabilir için kimlikleri, oluşturulmakta olan diğer kullanıcılar tarafından (aslında üzerinde herhangi bir denetiminiz yoktur) alınabileceğinden dolayı eşleşmesi zor.

Daha önce böyle bir şeyle uğraşan var mı? Bakabileceğim başka olası çözümler var mı?kabın içinde ve size paylaşım dizinine izinleri vermek için ana makine izin amacıyla uyumlu olmalıdır ana makinede Bildiğim kadarıyla, kullanıcı kimliği ve grup kimliği için

+0

Çalıştırmak 'ls söyleyebilir misiniz acaba -l/var/log/sen' liman işçisi kapsayıcınızı run' hemen sonra zookeeper'. Ben (Windows/OS X' ortamı kullanılarak boot2docker 'üzerindedir gibi) kabın Oliboy50 İçeriden @ – Oliboy50

+0

senin monte hacminin grup sahibi' idi staff' olmadığını bilmek istedi, bu ne ile aynıdır (bu benziyordu I) başlangıçta yayınlanmıştır: 'drwxr-xr-x 2 106 111 4096 Haz 30 17:18 zookeeper' konak kendisi bakıldığında, bu gibi görünüyordu: ' drwxr-xr-x 2 Yaupon Yaupon 4096 1 Temmuz 23 : Eğer ben Ubuntu üzerinde koşuyorum 52 zookeeper' Zihin yüzden ben Windows'tan "personel" grubunu gördük sanmıyorum. –

cevap

3

.

+0

Hey, cevap için teşekkürler. “Taşınabilir” (yani, çakışma olmadığından emin olmak) yolunda kimlik atamanın kolay bir yolunu biliyor musunuz? Yeni konteynırları otomatik bir şekilde kurmanın kolay bir yolunu buldunuz mu? –

+0

@massivedynamic iyi sorular ... hayır, bunu otomatikleştirmedim, ama yapılması zor olmadığına inanıyorum. – yegor256

+0

Bunu bulundu. Umarım https://denibertovic.com/posts/handling-permissions-with-docker-volumes/ yardımcı olur –

0

üretimi üretimi ve geliştirme kabı arasındaki farkı görmek çok önemlidir. Afaik, Docker konteyneriniz üretimde bile kök olarak çalışıyorsa gerçek bir sorun yoktur. Bununla birlikte, bir üretim hacmini asla istememeniz ya da buna ihtiyaç duymamanız gerekir. Bir zookeeper olarak çalıştırmak istiyorsanız bunu yapmakta çekinmeyin.

// Düzenleme: Okuduğum kadarıyla, aslında bir şeyleri root olarak çalıştırırken bir güvenlik sorunu olabileceğine inanıyorum, bu yüzden üretimde bunu yapmamanızı öneririz. gerçekten buna unportable yaratıyor - denemek ve uid ve gid sadece küçük yerel/proje için geçerli olan maç için

çözüm. Sen denemek ve keyfi bir yüksek uid ve gid ayarlayın ve sonra bunu da Devs makinelerin her biri üzerinde aynı, ama bu her zaman iyi olacak anlamına gelmemektedir. gelişme mevcut dosyalar üzerinde çalıştırmak chmod -R 0777 tarihinde ve daha sonra umask 0000 sonra oluşturulan dosyalar ve dizinleri kurulum izinlerine: dr;

tl. Daha sonra, hangi kullanıcı tarafından oluşturulmuş olursa olsun, dosyalarınızı istediğiniz gibi monte edebilir ve düzenleyebilirsiniz.

İlgili konular