我使用docker image
创建了Google云计算实例gcloud beta compute instances create-with-container serverName \
--container-image gcr.io/myProject/myContainer
决定ssh到这个容器: 首先,我使用ssh
登录此计算实例gcloud compute --project myProject ssh serverName
然后在计算实例内运行:
docker exec -it e3e840a8347c /bin/bash
我得到了
Error response from daemon: Container e3e840a8347c is restarting, wait until the container is running
好吧,我需要查看日志来调试重启的原因:
docker logs e3e840a8347c
我得到了:
"logs" command is supported only for "json-file" and "journald" logging drivers (got: gcplogs)
如何查看日志? 也许其他人建议如何调试容器重启。
答案 0 :(得分:3)
gcloud beta logging read projects/my-project-name/logs/gcplogs-docker-driver | grep data
向我展示了来自docker' gcplogs
在这里我如何选择projects/my-project-name/logs/gcplogs-docker-driver
名称:
gcloud logging logs list
显示所有可能的日志名称列表。
答案 1 :(得分:1)
According to the documentation regarding docker logs
,如果未在docker run
命令中指定日志记录驱动程序,则docker将自动使用上一个错误指定的json文件或journald。
请注意,因为docker文档也包含information on exactly how to get gcplogs to work with your container。如果您想使gcplogs成为所有容器的默认日志记录服务,请找到docker的daemon.json
文件,并将log-driver
和log-opt
键设置为您的任何内容需要并重启docker。如果您不想更改默认日志记录服务,请确保将docker run
命令设置为包含标记--log-driver=gcplogs
。
至于调试部分,如果你的容器正在重新启动,那么要么你传递了-r
或--restart
标志(不太可能),要么就是那个与你试图集装箱的服务相关的那个正确地工作。最好的建议是获取容器上的docker logs
,看看出了什么问题,然后尝试搜索互联网来修复它。如果需要查看容器配置,还可以使用docker inspect containerID/Name
。
答案 2 :(得分:1)
如果Docker配置为使用不支持读取的日志驱动程序,则需要通过配置的日志记录系统访问日志。
例如,如果将Docker配置为记录到syslog,则可以从syslog写入条目的任何位置查看日志。
对于gcplogs
驱动程序,当您通过网络浏览器登录Google Cloud时,可以通过Google Cloud Platform Console日志查看器界面访问日志。