Не мог направить реестр докера stdout к файлу журнала

Я пытался (скорее бесполезно) этим днем попытаться мешать реестру докера писать в stdout, а скорее журнал, но я думаю, что базовый Python создает процессы, которые, кажется, обходят все усилия по формированию каналов к журналу.

Я попробовал обычное > и 2>&1 и с передачей по каналу к различным командам, но все это, кажется, выходит из моего схватывания.

Есть ли так или иначе, я могу заставить весь вывод этой команды переходить прямо к журналу, а не stdout?

[править]

Это - сценарий, который я использую для запуска его, это - часть сценария оболочки, который я планирую использовать как услуга

start() {
  # Sugar
  echo -e "Starting registry"

  # Run the registry
  export LOGLEVEL=NOTSET
  export AWS_BUCKET=$TargetBucket
  export AWS_KEY=$AWSAccessKey
  export AWS_SECRET=$AWSSecretKey
  docker-registry & 2>&1 | tee $LogFile

  # Create a lock file
  touch $LockFile
}
2
задан 14 July 2014 в 13:08
2 ответа

Облегчите себе жизнь, используя прекомпилированные пакеты, доступные в EPEL: docker-io-1.0.0-6.el6.x86_64.rpm и docker-registry-0.7.1-2.el6.noarch. rpm на момент написания этой статьи.

У вас будет и уже работает служебный скрипт (нет необходимости сворачивать собственный), вы будете получать обновления (проще, чем перекомпилировать или переустановить из пипки) и интеграцию с ОС.

Ваша проблема с журналами исчезнет, так как журналы настроены в файле /etc/docker-registry.yaml (ссылка на который содержится в /etc/sysconfig/docker-registry, используя DOCKER_REGISTRY_CONFIG=/etc/docker-registry. yml)

Вы можете определить, куда указывают лог-файлы, используя директиву loglevel: в секции common, или для каждого провайдера, используя *_logfile:.

Если вы предпочитаете придерживаться ручной установки, обратите внимание, что обычно docker-registry - это serverd с помощью gunicorn, используя следующую команду (она взята из установки Fedora 20, она не должна быть слишком разной):

/usr/bin/gunicorn --access-logfile - --debug --max-requests 100 --graceful-timeout 3600 \
  -t 3600 -k gevent -b ${REGISTRY_ADDRESS}:${REGISTRY_PORT} -w $GUNICORN_WORKERS \
  docker_registry.wsgi:application

--access-logfile будучи stdin является systemd вещью)

.
0
ответ дан 3 December 2019 в 11:42

В случае, если кто-то еще ищет ответ, я просто осознаю себя недавно.

Когда вы устанавливаете команду docker-registry rpm и запускаете службу, файл журнала сохраняется в самом файле журнала systemd.

Вот команда для получения журнала: sudo journalctl -fu docker-registry.service

Тот же способ получить журнал докеров.

Вы также можете отредактировать /usr/lib/systemd/system/docker-registry.service и заменить - после - access-logfile с нужным файлом. Требуется перезапуск службы.

2
ответ дан 3 December 2019 в 11:42

Теги

Похожие вопросы