我使用docker image创建了谷歌云计算实例
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)
怎么看日志?也许其他人建议如何调试容器重启。
gcloud beta logging read projects/my-project-name/logs/gcplogs-docker-driver | grep data
向我展示了docker's gcplogs
所需的日志
在这里我如何拿起projects/my-project-name/logs/gcplogs-docker-driver
名称:
gcloud logging logs list
它显示了所有可能的日志名称列表。
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
。
如果Docker配置为使用不支持读取的日志驱动程序,则需要通过配置的日志记录系统访问日志。
例如,如果将Docker配置为记录到syslog,则可以从syslog写入条目的任何位置查看日志。
对于gcplogs
驱动程序,当您通过Web浏览器登录Google Cloud时,可以通过Google Cloud Platform Console日志查看器界面访问日志。