Какая разница в логах между контейном и сервисом?

Логи в контейнере и сервисе в Docker имеют некоторые отличия. Рассмотрим их подробнее:

Контейнер:
- Каждый запущенный контейнер в Docker обладает собственным пространством имен для логов.
- По умолчанию, Docker отправляет логи контейнера на стандартный вывод (stdout) и стандартный вывод ошибок (stderr) контейнера.
- Как правило, логи контейнера запускаются в режиме потокового вывода, то есть каждая новая строка в логах будет отображаться сразу как новый вывод.
- Вы также можете настроить систему журналирования Docker, чтобы перенаправить логи контейнера во внешние системы хранения логов, такие как Docker Logging Drivers (syslog, json-file, fluentd и др.).
- Все логи контейнера доступны только в контексте этого контейнера. Их можно просмотреть с помощью команды docker logs [CONTAINER_ID].

Сервис:
- Сервис в Docker — это абстракция, которая позволяет запускать множество контейнеров с одним и тем же образом и настроениями.
- Логи сервиса представляют собой совокупность логов всех контейнеров, которые относятся к данному сервису.
- При использовании docker-compose для запуска сервиса, логи доступны через команду docker-compose logs [SERVICE_NAME]. Они могут быть просмотрены как в режиме потокового вывода, так и в одиночном режиме.
- Команда docker service logs [SERVICE_NAME] позволяет просматривать логи сервиса в режиме потокового вывода в Swarm-кластере.

Таким образом, основные различия между логами контейнера и сервиса в Docker заключаются в том, что логи контейнера относятся только к этому контейнеру и могут быть просмотрены только в контексте этого контейнера, в то время как логи сервиса являются суммарными логами всех контейнеров, принадлежащих к данному сервису. Логи сервиса также могут быть удобно просмотрены с помощью команды docker-compose logs или docker service logs в зависимости от среды выполнения.