docker - x masaüstü bir kapsayıcıda nasıl çalıştırılır?


10

Linux makinemi, biri Windows VM, diğeri de Linux kapsayıcısı olmak üzere birden fazla konuk işletim sistemi çalıştıracak şekilde ayarlamaya çalışıyorum. Buradaki amaç, ana işletim sistemini çalıştırmak ve ana bilgisayar donanımı ile oynamakta özgürken, ana bilgisayar sistemini bozmamı engellemektir. Sonunda, masaüstümü konteynerde çalıştırmanın üstünde, grafik hızlandırmalı simülasyonlar vb. Çalıştırmayı umuyorum. Docker, yerleşik konteynerlerin bu kadar güzel git benzeri versiyonuna sahip olduğundan, kullanmak iyi bir fikir gibi görünüyordu. Belki libvirt LXC ile aynı şeyi yapar, ancak docker'in ayrıcalıklı modu, aygıtları kapsayıcıya yapılandırmak zorunda kalmanızı kolaylaştırır.

Biraz araştırma yaptım ve birkaç cevap buldum, ama hepsini bir araya getirmekte zorlanıyorum.

LXC'de arka plan

X'i LXC'den çalıştırmak , bir kapsayıcıyı nasıl yapılandırabileceğimi görmemde bana yardımcı oldu (ie):

lxc.cgroup.devices.allow = c 226:0 rwm

ve kullanarak

mknod -m 666 dri/card0 c 226 0

ana cihaza bağlanmak için kabın içinde.

Liman işçisi

Gönderen cuda - Bir liman işçisi kabından GPU'nun kullanılması , ben LXC arka ucuyla Docker çalışma aynı kurulumu alabilirsiniz gördük.

Bir docker konteyneri ayrıcalıklı modda çalıştırılırsa, bu ekstra yapılandırma olmadan normalde GPU'ya erişebileceği anlaşıldı. Bu nedenle, bir temel sistemi çalıştırdım, grafik sürücüleri, xorg-sunucusu, xorg-xinit ve bir pencere yöneticisi test ettim.

İlk deneme

# startx
Cannot run from a console (or some message like that)

Tamam, tty2'de olduğumu sanıyordum.

# tty
/dev/console

Beklediğim bu değil.

# chvt 2
# tty
/dev/tty2

Sanki işe yaramış gibi görünüyor. # startxTekrar deneyelim . İmleç ortada olarak pencere yöneticisini başlattı. Fare yanıtı yok. Klavye yanıtı yok. Şimdi tty ile değiştirmeye çalışalım Ctrl-Alt+F3. Cevap yok. Görünüşe göre soğuğu yeniden başlatmam gerekecek.

İkinci deneme

# tty
/dev/console
# chvt 2
# tty
/dev/console

Ne? Şimdi değiştiremiyorum?

Devam etti

Başka bir zaman denedikten sonra, tty değiştirmek için aldım ve startx bilgisayarı tekrar dondu.

Şimdi ne var?

Şimdi bir pusuladayım. Gerçekten bir konteyner kullanmak istiyorum - Docker tercih, libvirt ile LXC de kabul edilebilir - yalın bir ana işletim sistemi tutarken günlük işletim sistemim olarak çalıştırmak için kabul edilebilir.

Docker'ı burada ayrıcalıklı modda kullanmak veya açık LXC arka ucunu kullanmak ve yukarıda listelenen seçenekleri denemek en iyisidir?

Zaten Windows vm yönetmek için libvirt (muhtemelen vagrant-libvirt altında) kullanmayı planlıyorum, bu yüzden bu durumda libvirt veya vagrant-LXC kullanmak benim için aynı olurdu?

Düzenleme: LXC vs Docker okuma , Docker ve Docker kapsayıcılar tek uygulama ortamları için tasarlandığından, belki de günlük işletim sistemim olarak çalıştırmak için Docker yerine LXC kullanmak en iyi olacağını hissediyorum. Düşünceler?

Düzenleme: Docker gibi, bana cgroups ve mknod adımları atlamak için izin veren bir lxc cihaz komutu olduğunu keşfettim. X'i sistemimi başlatmaya ve dondurmaya başlayabilmemden önce, şimdi hata veriyor. Belki sonunda çözebilirim, çünkü orada kimse yok gibi görünüyor.

Güncelleme: Farem çalışıyor. Konukta xf86-giriş-fare ve xf86-giriş-klavye kurdum. Ana bilgisayarda, aşağıdakileri çalıştırdım:

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

İşler!


LXC'nin Docker değil, kullanmam gereken şey olduğuna oldukça ikna oldum. Ne yazık ki, X'i çalıştırabilmem için belirli bir tty'yi bir konteynere bağlama hakkında güncel belgeler bulmak oldukça zor bir zamandır. Herkes ana bilgisayarda bir tty "sahip" almak için LXC kapları ile doğru çalışacağını biliyor mu?
Paul

Ben buna LXC kendi tty ve atama video kartları verdiğinde Denedim startxile exec twmama her şey benim açımdan donduruldu. Klavye veya fareye yanıt yok.
Paul

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11 ilgili bir cevaba sahip gibi görünüyor. / Dev / input zincirini iletmem gerektiğini düşünüyorum. Bunu deneyeceğim.
Paul


Klavyenin sıralandığını düşündüm. Ama şimdi tekrar çalışmıyor.
Paul

Yanıtlar:


1

Bu sorunun ihtiyacım olan cevabı vardı. Tabii ki, lxc-deviceyapılandırma dosyasında cgroup tanımları yerine kullandım . Ancak, benim durumumda, klavyeyi sadece farklı bir tty ile başlatırsam X'de çalışmaya başladım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.