Kapsayıcı içindeki dosyaları düzenlemek için Bryan'ın önerdiği gibi ana bilgisayardaki düzenleyicileri ve düzenleyicileri kullanmak genellikle en iyisidir. Aslında, kapsayıcı kaldırıldığında değişiklikleriniz kaybolacağından birimde olmayan bir dosyayı hiçbir zaman düzenlememelisiniz.
Ancak, kapsayıcılar içindeki düzenleyicileri ve GUI uygulamalarını çalıştırmak oldukça olası ve kullanışlıdır. emacs'ın komut satırı sürümünü çalıştırmak için, yapmam gereken tüm idi:
$ docker run -it debian /bin/bash
[email protected]:/# apt-get update && apt-get install -y emacs23-nox
[email protected]:/# emacs
Ben boot2docker ve liman işçilerinin Linux'ta çalışan bu test ettik. Bence senin problemin, emacs'in bir XServer çalışan olmadığı için varsayılan olarak çalışmayacak olan emacs X sürümünü başlatmaya çalışmasıydı.
Bir kabın içine bir GUI uygulaması çalıştırmak isterseniz, bir kaç seçenek var:
- Kullanım VNC veya X yönlendirme yapmak benzer
- Kullanım ssh -X (bir xserver gerektirir gibi xquartz)
- Dağı kabın (iç xsocket yine xserver gerektirir ve bunu XQuartz nasıl çalıştığı emin değilim, aynı zamanda xsocket açığa bazı güvenlik sorunları)
vardırLütfen konteynerlerin etkileşimli uygulamalar için kullanılmaması gerektiğini düşünmeyin. Güvenlik dahil olmak üzere pek çok neden var.
subuser project, Docker'ı etkileşimli uygulamaları çalıştırmak için kullanır ve bunun neden iyi bir fikir olabileceğiyle ilgili ayrıntılara girer.
export TERM=xterm
ve sen hep önceki satıra geçmek için çift girmek Cp gerekecek olsa da, emacs'ı (not çalıştırmak mümkün olacak:
Bu gerçekten iyi bir fikir değil. Konteynerler, etkileşimli uygulamalar değil, hizmetler için iyi çalışır. Tüm giriş ve çıkışlar işlemden (emacs) bir Docker CLI'ye Docker CLI'sı üzerinden bir http kanalı üzerinden çoğaltılır. – Bryan
Boot2Docker kullanıyor musunuz? Emacs bu şekilde çalıştırarak ne elde etmeye çalışıyorsunuz? – Bryan
Teşekkürler @bryan. Codebase'in geliştirilmesine yardımcı olmak için Docker örneği tarafından kontrol edilen kodun bir kısmını düzenlemek istiyorum. Örneğin Docker komutu "git clone repo ..." ve klonlanan dosyaları düzenlemek istiyorum. –