AKTUALIZACJA
Najłatwiejsza metoda: za pomocą exec docker
Docker w wersji 1.3 lub nowszej obsługuje polecenie exec
zachowujące się podobnie nsenter
. Ta komenda może uruchomić nowy proces w już działającym kontenerze (kontener musi już mieć uruchomiony proces PID 1). Możesz uruchomić, /bin/bash
aby zbadać stan kontenera:
docker exec -t -i mycontainer /bin/bash
zobacz dokumentację wiersza polecenia Docker
Alternatywna metoda 1
Migawka
Możesz ocenić system plików kontenera w ten sposób:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
W ten sposób możesz ocenić system plików uruchomionego kontenera w dokładnym momencie. Kontener nadal działa, nie uwzględnia się przyszłych zmian.
Możesz później usunąć migawkę za pomocą (nie ma to wpływu na system plików uruchomionego kontenera!):
docker rmi mysnapshot
Alternatywna metoda 2
ssh
Jeśli potrzebujesz ciągłego dostępu, możesz zainstalować sshd w kontenerze i uruchomić demona sshd:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
W ten sposób możesz uruchomić aplikację za pomocą ssh (podłącz i uruchom co chcesz).
AKTUALIZACJA: Alternatywna metoda 3
nsenter
Użyj nsenter
, patrz https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
Krótka wersja to: za pomocą nsenter można wprowadzić powłokę do istniejącego kontenera, nawet jeśli ten kontener nie obsługuje SSH ani żadnego innego demona specjalnego przeznaczenia
docker exec <container> bash
. Po prostu otwórz skorupę w pojemniku.