Jak wejść do kontenera Docker już działającego z nowym TTY
Mam kontener, który uruchamia usługę Apache na pierwszym planie. Chciałbym mieć dostęp do kontenera z innej powłoki, aby "grzebać" w nim i sprawdzać pliki. W tej chwili, jeśli dołączę do kontenera, pozostaję patrząc na demona Apache i nie mogę uruchomić żadnych poleceń.
Czy możliwe jest dołączenie innego tty do działającego kontenera? Możliwe, że mogę skorzystać z faktu, że Docker właśnie owija się wokół kontenerów LXC? I próbowałem sudo lxc-console -n [container-id] -t [1-4]
, ale wydaje się, że tylko jeden tty jest dostępny i to jest ten, który uruchamia demona apache. Może istnieje sposób na włączenie wielu konsol lxc podczas budowania?
Wolałbym , a nie konfigurować i budować kontener z usługą openssh, jeśli to możliwe.
9 answers
W docker 1.3 jest nowe polecenie docker exec
. Pozwala to na wprowadzenie uruchomionego Dockera:
docker exec -it [container-id] bash
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 17:41:48
Aby wejść do kontenera bez użycia SSH, należy użyć narzędzia Jérôme 'a Petazzoniego o nazwie "nsenter". Zobacz: https://github.com/jpetazzo/nsenter
Install with simply running: docker run -v /usr/local/bin:/target jpetazzo/nsenter
Następnie użyj polecenia docker-enter <container-id>
, aby wprowadzić kontener.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-05 13:57:03
Update
Od wersji docker 0.9, aby poniższe kroki zadziałały, należy teraz zaktualizować plik /etc/default/docker
za pomocą '-e lxc'
do opcji uruchamiania demona Docker przed ponownym uruchomieniem demona (zrobiłem to przez ponowne uruchomienie hosta).
...it [docker 0.9] zawiera nowy" sterownik silnika", aby umożliwić korzystanie innego API niż LXC, aby uruchomić kontenery. Zapewnia również nowe sterownik silnika oparty na nowym Biblioteka API (libcontainer), która jest w stanie do obsługi grup kontrolnych bez użycia narzędzi LXC. Głównym problemem jest że jeśli polegasz na lxc-dołącz do wykonywania działań na swoim kontenera, jak uruchomienie powłoki wewnątrz kontenera, która jest szalenie przydatne dla środowiska developpment...
Należy pamiętać, że spowoduje to uniemożliwienie "działania" nowej opcjonalnej funkcji sieciowej Docker 0.11 host only interfejs loopback. Zgłoś błąd
Okazuje się, że rozwiązaniem dla innego pytania było również rozwiązanie dla tego:
...możesz użyć docker
ps -notrunc
, aby uzyskać pełny identyfikator kontenera lxc i następnie użyjlxc-attach -n <container_id>
Uruchom bash w tym kontenerze jako root.
Aktualizacja: wkrótce będziesz musiał użyć ps --no-trunc
zamiast ps -notrunc
, który jest przestarzały.
Znajdź pełny identyfikator kontenera
Wpisz LXC załącz dowództwo.
Top pokazuje mój proces apache uruchamiający ten docker.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:42
nsenter
tak. Jednak musiałem również wprowadzić kontener w prosty sposób, a nsenter nie wystarczyło do moich potrzeb. W niektórych przypadkach był wadliwy(czarny ekran plus-flaga wd nie działa). Ponadto chciałem zalogować się jako konkretny użytkownik i w określonym katalogu.
W końcu stworzyłem własne narzędzie do wprowadzania kontenerów. Można go znaleźć pod adresem: https://github.com/Pithikos/docker-enter
Jego użycie jest tak proste jak./docker-enter [-u <user>] [-d <directory>] <container ID>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-30 16:42:04
A co z uruchomieniem tmux / GNU Screen wewnątrz kontenera? Wygląda na to, że łatwiej jest uzyskać dostęp do tylu vty, ile chcesz za pomocą prostego:
$ docker attach {container id}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-01 05:00:51
Pierwszy {[6] } krok get container id:
docker ps
To pokaże ci coś w rodzaju
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[[4]} 1170fe9e9460 localhost: 5000 / python: env-7e847468c4d73a0f35e9c5164046ad88". / run_notebook.sh " 26 seconds ago Up 25 seconds 0.0.0.0: 8989 - >9999 / tcp SLURM_TASK-303337_0
1170fe9e9460
w tym przypadku jest to identyfikator kontenera.
Drugi , wpisz docker:
docker exec -it [container_id] bash
Tak więc w powyższym przypadku:
docker exec -it 1170fe9e9460 bash
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 18:04:23
Sposób "nsinit" to:
Zainstaluj nsinit
git clone [email protected]:dotcloud/docker.git
cd docker
make shell
Z wnętrza pojemnika:
go install github.com/dotcloud/docker/pkg/libcontainer/nsinit/nsinit
Z zewnątrz:
docker cp id_docker_container:/go/bin/nsinit /root/
Użyj go
cd /var/lib/docker/execdriver/native/<container_id>/
nsinit exec bash
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-10 23:06:51
Uruchomiłem powershell na uruchomionym microsoft / iis run jako daemon using
docker exec -it <nameOfContainer> powershell
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-17 12:27:04
docker exec -t -i container_name /bin/bash
Zabierze cię do konsoli kontenerów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 11:37:03