2015-05-15 31 views
7

I niedawno wyciągnął zdjęcie nginx:Nie można użyć -lt gdy uruchomiony Nginx Döcker lub kota loguje

docker pull nginx 

mogę go uruchomić i pomyślnie przejść do http://server_name i zobacz stronę „Witamy na Nginx”:

docker run -d -p 80:80 nginx 

Ale gdy próbuję sprawdzić dzienniki:

docker exec 6c79549e3eb4f6e5fc06f049b67814ac4560ce2cdd7cc6ae84b44b5ae09a9a05 cat /var/log/nginx/access.log 

To po prostu zawiesza się i wyświetla nic. To samo z protokołem błędów. Teraz, jeśli utworzę plik test.txt w tym samym folderze i użyję funkcji dokowania exec do (zobacz) cat pliku, uruchamiam bez zwalniania lub żadnych problemów.

Nawet jeśli próbuję uruchomić go w trybie interaktywnym, to po prostu wisi:

docker run -i -t -p 80:80 nginx 

Po raz kolejny terminal wisi na następnej linii nic nie robi, ale wydaje się działać, ponieważ można uzyskać dostęp z gościny nginx strona.

Naprawdę zagubiony, co się dzieje, próbowałem szukać tego problemu, ale nie znalazłem żadnego rozwiązania do tej pory. Bez możliwości przeglądania dzienników będzie bardzo trudno debugować :) Również nie powinny być przenoszone dzienniki dostępu do stdout w kontenerze nginx, ponieważ przez konwencjonalny dziennik kontenerów docker do stdout?

+0

Czy plik '/ var/log/nginx/access.log' istnieje w kontenerze? Spróbuj wejść do kontenera i uruchamiać polecenia interaktywnie za pomocą 'docker run -i -t -p 80:80 nginx/bin/bash' –

+0

Tak, access.log tam jest root @ ip-10-232-1 -195: ~/docker-registry/dockerfiles # docker exec d24a412224684434dfe9cf950015619ca4fc397e235602649591e2e5c46f4194 ls /var/log/nginx/access.log /var/log/nginx/access.log – alexfvolk

+0

Uruchom 'ls -al' zamiast tylko' ls' i opublikuj wynik. –

Odpowiedz

10

Jeśli pójdziesz wewnątrz pojemnika docker exec -it <container-id> /bin/bash i sprawdzić lokalizację dziennika ls -la /var/log/nginx/, pojawi się następujący komunikat: lrwxrwxrwx 1 root root 11 Apr 30 23:05 access.log -> /dev/stdout lrwxrwxrwx 1 root root 11 Apr 30 23:05 error.log -> /dev/stderr Oczywiście, dzienniki są napisane w standardowe wyjście. Możesz również spróbować wykonać cat access.log w kontenerze i nadal nie pokazuje nic.
Teraz właściwy sposób na uzyskanie logów wychodzi poza kontener i robi docker logs <container-id> Następnie zobaczysz swoje dzienniki. Mam nadzieję, że to pomoże!

+1

Dziękuję :) Widzę teraz wyjście, myślę, że to był błąd z mojej strony, ciągle używałem złego adresu IP. – alexfvolk