2015-02-18 9 views
0

Вопрос может быть немного новичком. Запуск docker exec -it mycontainer bash для входа в контейнер-демон (postgresSQL), и echo что-то. сейчас я выхожу из него и использую docker logs mycontainer, чтобы увидеть мое эхо.Как использовать журналы докеров

Согласно

Журналы Докер команды пакетного извлекает журналы, присутствующие во время выполнения. Команда docker logs --follow будет продолжать передавать новый вывод из STDOUT и STDERR контейнера.

docker logs слушать STDOUT контейнера, почему я не вижу мои строки просто эхом внутри него?

ответ

1

I Предположим, что регистрируется только для основного процесса в контейнере. Поскольку exec создает новый процесс, он не будет регистрироваться.

Обратите внимание, что docker logs работает для процессов, указанных в командной перспективе: например

$ ID=$(docker run -d debian sh -c "while true; do echo "hello"; sleep 1; done;") 
$ docker logs $ID 
hello 
hello 
hello 
hello 
hello 
1

Docker двигатель сохраняет только стандартный вывод из процесса с идентификатором 0 (то есть процесс, начатый с помощью директивы CMD вашего Dockerfile).

Кстати, на хосте Docker вы можете просмотреть содержимое журналов контейнера, просмотрев файл /var/lib/docker/containers/<ID of your container>/<ID of your container>-json.log.

Этот файл хранит журналы в формате JSON.