Назад | Перейти на главную страницу

Невозможно направить stdout docker-registry в файл журнала

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

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

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

[редактировать]

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

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
}

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

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

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

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

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

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

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

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

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

Если вы предпочитаете придерживаться ручной установки, обратите внимание, что обычно docker-registry обслуживается 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

(The --access-logfile будучи stdin это systemd вещь)