5.1 Podstawy komendy docker exec
Komenda docker exec
— to narzędzie do interakcji z działającymi kontenerami. Pozwala uruchamiać komendy i otwierać interaktywne sesje wewnątrz kontenera. Przydaje się do zadań administracyjnych, debugowania i monitoringu. W tym wykładzie szczegółowo omówimy, jak używać komendy docker exec
, jakie parametry są dostępne i przedstawimy przykłady jej praktycznego zastosowania.
Komenda docker exec
jest wykorzystywana do wykonywania komend w uruchomionym kontenerze. Dzięki niej można wejść do kontenera i wchodzić z nim w interakcję, jak gdybyś pracował bezpośrednio z serwerem.
Składnia
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Gdzie:
-
CONTAINER
: nazwa lub identyfikator kontenera, do którego chcesz się podłączyć. -
COMMAND
: komenda, którą chcesz wykonać wewnątrz kontenera. ARG...
: argumenty dla komendy.
Przykład podstawowego użycia
W tym przykładzie zostanie wykonana komenda ls /app
wewnątrz kontenera my_container
, co pozwoli zobaczyć zawartość katalogu /app
w kontenerze.
docker exec my_container ls /app
5.2 Parametry polecenia docker exec
Komenda docker exec obsługuje kilka opcji, które pozwalają skonfigurować sposób wykonywania poleceń wewnątrz kontenera.
1. Otwarcie interaktywnej sesji
Aby rozpocząć interaktywną sesję, użyj kombinacji opcji -i
(interactive) i -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
W tym przykładzie zostanie otwarty interaktywny terminal Bash
wewnątrz kontenera my_container
. Pozwoli to na wykonywanie poleceń w czasie rzeczywistym.
2. Wykonywanie poleceń w trybie odłączonym
Jeśli potrzebujesz wykonać polecenie w kontenerze i nie czekać na jego zakończenie, możesz użyć opcji -d
(detached mode).
docker exec -d my_container touch /app/newfile.txt
W tym przykładzie polecenie tworzy pusty plik newfile.txt
w katalogu /app
kontenera my_container
. Kontrola nad terminalem zostaje zwrócona zaraz po uruchomieniu polecenia, bez oczekiwania na jego zakończenie.
3. Określenie środowiska użytkownika
Możesz przekazywać zmienne środowiskowe do kontenera za pomocą parametru -e
.
docker exec -e MY_VAR=value my_container env
Ten przykład przekaże zmienną środowiskową MY_VAR
do kontenera i uruchomi polecenie env
, aby pokazać wszystkie zmienne środowiskowe wewnątrz kontenera.
5.3 Przykłady użycia
Przykład 1: Sprawdzanie uruchomionych procesów w kontenerze
Ten przykład wykona polecenie ps aux
wewnątrz kontenera my_container
i pokaże listę wszystkich uruchomionych procesów.
docker exec my_container ps aux
Przykład 2: Sprawdzanie stanu usługi w kontenerze
Ten przykład wykona polecenie service nginx status
wewnątrz kontenera my_container
i pokaże stan usługi nginx
.
docker exec my_container service nginx status
Przykład 3: Instalacja pakietu wewnątrz kontenera
Ten przykład zaktualizuje listę pakietów i zainstaluje edytor vim
wewnątrz kontenera my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Praktyczne scenariusze
1. Administracja kontenerami
Komenda docker exec pozwala administratorom na wykonywanie zadań serwisowych wewnątrz kontenerów: edytowanie plików konfiguracyjnych, sprawdzanie logów czy zmienianie uprawnień do plików.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Debugowanie aplikacji
Podczas tworzenia i testowania aplikacji komenda docker exec pomaga deweloperom sprawdzać stan aplikacji, wykonywać debugowanie oraz analizować błędy.
docker exec -it my_container python /app/scripts/debug.py
3. Monitorowanie i diagnostyka
Z pomocą docker exec można wykonywać komendy diagnostyczne i monitorować stan kontenera: sprawdzać użycie zasobów, połączenia sieciowe i inne metryki.
docker exec my_container top
Ta komenda uruchomi narzędzie top wewnątrz kontenera my_container i pokaże bieżące wykorzystanie zasobów.
5.5 Dodatkowe zalecenia
1. Zapewnienie bezpieczeństwa
Podczas używania komendy docker exec ważne jest zachowanie bezpieczeństwa. Upewnij się, że dostęp do kontenerów jest ograniczony i tylko autoryzowani użytkownicy mogą wykonywać komendy wewnątrz kontenerów.
2. Automatyzacja zadań
Możesz zautomatyzować rutynowe zadania, używając skryptów, które korzystają z komendy docker exec. Dzięki temu można tworzyć złożone procesy robocze i automatyzować administrację kontenerów.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Ten skrypt wykona komendę uptime
we wszystkich uruchomionych kontenerach i wyświetli ich czas działania.
3. Logi i debugowanie
Czasami wykonanie komendy może zakończyć się błędem. W takich przypadkach pomocne jest przejrzenie logów kontenera, aby znaleźć przyczynę.
docker logs my_container
GO TO FULL VERSION