Não é possível canalizar o stdout docker-registry para o arquivo de log

2

Eu tenho tentado (bastante futilmente) esta tarde tentar parar o registro docker da escrita para stdout, mas sim um log, mas acho que o Python subjacente está criando processos que parecem ignorar todos os esforços de canalização para um log.

Eu tentei o usual > e 2>&1 e com o piping para vários comandos, mas tudo parece escapar do meu alcance.

Existe alguma maneira que eu possa obter a saída all deste comando para ir direto para um log ao invés de stdout?

[editar]

Este é o script que estou usando para iniciá-lo, é parte de um script de shell que eu pretendo usar como um serviço

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
}
    
por Dave Mackintosh 11.07.2014 / 18:26

2 respostas

2

No caso de outros ainda à procura da resposta, acabo de perceber comigo mesmo recentemente.

Quando você instala o rpm do registro do docker e inicia o serviço, o arquivo de log é armazenado no próprio arquivo de diário do systemd.

Aqui está o comando para recuperar o log: sudo journalctl -fu docker-registry.service

Da mesma forma para obter o log do docker também.

Você também pode editar o /usr/lib/systemd/system/docker-registry.service e substituir o - after --access-logfile pelo arquivo que você deseja. A reinicialização do serviço é necessária.

    
por 28.10.2015 / 19:57
0

Facilite sua vida usando os pacotes pré-compilados disponíveis no EPEL: docker-io-1.0.0-6.el6.x86_64.rpm e docker-registry-0.7.1-2.el6.noarch.rpm até o momento desta publicação.

Você terá e já está trabalhando no script de serviço (não é necessário fazer o seu próprio), você receberá atualizações (mais fáceis do que recompilar ou reinstalar do pip ) e integração do sistema operacional.

O seu problema com logs desaparece, pois os logs são configurados no arquivo /etc/docker-registry.yaml (referenciado de /etc/sysconfig/docker-registry using DOCKER_REGISTRY_CONFIG=/etc/docker-registry.yml )

Você pode definir para onde os logs apontam usando a diretiva loglevel: na seção common ou por provedor usando *_logfile: .

Se você preferir ficar com uma instalação manual, note que geralmente o docker-registry é serverd por gunicorn , usando o seguinte comando (isto é retirado de uma instalação do Fedora 20, não deve ser muito diferente):

/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

(O --access-logfile sendo a stdin é uma coisa systemd )

    
por 14.07.2014 / 15:50

Tags