Я пытался (довольно безуспешно) сегодня днем попытаться остановить 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
вещь)