问题
如果此容器是使用
部署的,则如何将日志从docker容器标准输出发送到GCP Stackdrivergcloud compute instances update-container
命令?
最新发现
gcloud compute instances update-container VM_INSTANCE --container-image IMG
上下文
我的元数据“用户数据”部分:
#cloud-config
write_files:
- path: /etc/docker/daemon.json
content: '{"log-driver":"gcplogs"}'
runcmd:
- systemctl restart docker
提供正确的daemon.json文件:
p**a@f**i ~ $ cat /etc/docker/daemon.json
{"log-driver":"gcplogs"}p**a@f**i ~ $
我用gcloud update-container命令部署了一个容器:
p**a@f**i ~ $ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
425be3c47e2d eu.gcr.io/a**i/f**e:9fa641db8491def826eef4f8f288ddbd62f2be1b "yarn start --enviro…" 6 minutes ago Up 3 minutes klt--xuyd
再次检查已应用配置:
sudo journalctl -u docker.service
Apr 26 23:51:10 f**i systemd[1]: Started Docker Application Container Engine.
Apr 26 23:51:10 f**i dockerd[1464]: time="2019-04-26T23:51:10.036117615Z" level=info msg="API listen on /var/run/docker.sock"
Apr 26 23:30:21 f**i dockerd[711]: time="2019-04-26T23:30:21.903908969Z" level=debug msg="Using default logging driver gcplogs"
然后,当我尝试检查什么是记录器类型时,它仍然是json文件:
p**a@f**i ~ $ docker inspect -f '{{.HostConfig.LogConfig.Type}}' klt--xuyd
json-file
缺少堆栈驱动程序中的日志。我的过滤器值为:
resource.type="gce_instance"
我所看到的只是与Compute Engine启动和停止实例相关的日志。
如果我停止docker容器并使用
运行它docker run -d --log-driver=gcplogs --log-opt gcp-log-cmd=true IMG
然后检查记录器类型会得出结果:
docker inspect -f '{{.HostConfig.LogConfig.Type}}' klt--xuyd
gcplogs
并且日志在GCP Stackdriver中可见。
但是我无法执行docker run ...,因为此VM是我的CI / CD环境的一部分。容器使用
更新gcloud compute instances update-container ${VM_INSTANCE_NAME} --container-image IMG
container_vm:cos-stable-74-11895-86-0
我希望日志是可见的,而无需停止和启动容器,因为它是默认设置。