Aby edytować pliki wewnątrz kontenera, najlepiej jest używać woluminów i edytora na hoście, jak sugeruje Bryan. W rzeczywistości nigdy nie należy edytować pliku, który nie znajduje się w woluminie, ponieważ zmiany zostaną utracone po usunięciu kontenera.
Jednak całkiem możliwe i użyteczne jest uruchamianie edytorów, a nawet aplikacji GUI w kontenerach. Aby uruchomić wersję wiersza poleceń Emacsa, wszystko, co musiałem zrobić, to:
$ docker run -it debian /bin/bash
[email protected]:/# apt-get update && apt-get install -y emacs23-nox
[email protected]:/# emacs
Przetestowałem to z boot2docker i doker działa natywnie na Linuksie. Myślę, że twój problem polegał na tym, że emacs próbował uruchomić wersję X emacsa, która nie będzie działać domyślnie, ponieważ nie działa XServer.
Jeśli chcesz uruchomić aplikację GUI wewnątrz kontenera, masz kilka możliwości:
- Używaj VNC lub podobną
- Wykorzystanie ssh -X zrobić Przekazywanie X (wymaga serwer X, takich jak xquartz)
- Zamontuj xsocket wewnątrz pojemnika (znowu wymaga serwer X i nie jestem pewien, jak to będzie działać z xquartz, również istnieje kilka problemów z bezpieczeństwem wystawiając xsocket)
Nie wierz, że pojemniki nie powinny być używane w aplikacjach interaktywnych. Istnieje wiele powodów, aby to zrobić, w tym bezpieczeństwo. subuser project wykorzystuje Docker do uruchamiania aplikacji interaktywnych i szczegółowo opisuje, dlaczego może to być dobry pomysł.
To nie jest dobry pomysł. Kontenery działają dobrze dla usług, a nie dla aplikacji interaktywnych. Całe wejście i wyjście jest multipleksowane przez kanał http z procesu (emacs) do interfejsu Docker CLI za pośrednictwem demona Docker. – Bryan
Czy używasz Boot2Docker? Co próbujesz osiągnąć, uruchamiając emacs w ten sposób? – Bryan
Dzięki @bryan. Chcę edytować część kodu, który został sprawdzony przez instancję Docker, aby pomóc w opracowaniu kodu. np. Polecenie Dockera uruchomiło "git clone repo ..." I chcę edytować pliki, które zostały sklonowane. –