Zgodnie z to the official Docker docs, możliwe jest uzyskanie wyjścia stdout
i stderr
pojemnika jako GELF messages, co jest formatem zrozumiałym na przykład przez. Graylog/Graylog2 i logstash.Korzystanie z funkcji dokowania z kierownikiem dziennika GELF
Działa to dobrze, gdy uruchamiam moje kontenery ręcznie z wiersza poleceń. Na przykład,
docker run --log-driver=gelf --log-opt gelf-address=udp://localhost:12201 busybox echo This is my message.
wyśle wiadomość dziennika do mojego serwera Graylog2 działa na localhost, który ma UDP wejściowego słuchacza skonfigurowany na porcie 12201.
Teraz chcę użyć tych samych opcji dziennika z docker-compose który , zgodnie z dokumentami, should be possible in principle. Jednak docs nie wspomina o żadnych formatów dziennika, ale json-file
, syslog
i none
i kiedy to coś podobnego
my-container:
container_name: ...
build: ...
ports: ...
log_driver: "gelf"
log_opt:
gelf-address: "udp://localhost:12201"
w moim pliku docker-compose.yml
następnie docker-compose up
nie powiedzie się z:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 39, in main
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 495, in up
File "/code/build/docker-compose/out00-PYZ.pyz/compose.project", line 265, in up
File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 369, in execute_convergence_plan
File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 270, in create_container
File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 643, in _get_container_create_options
File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 656, in _get_container_host_config
File "/code/build/docker-compose/out00-PYZ.pyz/docker.utils.types", line 27, in __init__
ValueError: LogConfig.type must be one of (json-file, syslog, none)
Dla przypomnienia, to był na docker-compose 1.4.0 i docker 1.8.1, build d12ea79.
Wygląda na to, że Docker i docker-compose nie znajdują się na tym samym poziomie implementacji. Właśnie stwierdziłem, że zostało to już rozwiązane i zawarte w Master branch
na Github, zobacz https://github.com/docker/compose/issues/1869 i https://github.com/docker/docker-py/pull/724.
Czy istnieje jakakolwiek metoda ponownego zainstalowania modułu dokowanego z bieżącego katalogu głównego lub ręcznego dodania go do istniejącej instalacji? Nie mogłem znaleźć pliku, w którym zatwierdzenie trafia do dowolnego miejsca na moim hoście ...
Zostało to naprawione w 'docker-py == 1.4.0' i zostanie naprawione w' docker-compose == 1.5.0' release – dnephin
Tak, też to zobaczyłem. Jednak "docker-compose == 1.5.0" zostanie wydany w dniu [10/13/2015] (https://github.com/docker/compose/wiki/1.5.0-Milestone-Project-Page), więc Prawdopodobnie będę musiał trochę poczekać.Właśnie próbowałem zainstalować najnowszy 'master' z Github poprzez' pip install -U https: // github.com/docker/docker-py.git', a następnie 'docker-compose --version' podaje poprawne wyjście' 1.5 .0-dev'. Mimo to, wszystkie komendy do tworzenia dokerów, takie jak 'docker-compose up', nie działają z' raise ValueError ("Nie można zdekodować żadnego obiektu JSON") ValueError: Nie można zdekodować obiektu JSON'. Czy masz jakiś pomysł? – Dirk
To powinno być naprawione na master teraz – dnephin