Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

启用 Docker 调试输出

如果您遇到与 Docker 容器或映像有关的问题,可以在 Docker 守护程序上启用调试模式。启用调试可提供来自守护程序的更详细输出,并且您可以使用此信息来了解有关容器或映像出现问题的原因的更多信息。

启用 Docker 调试模式对于检索从容器注册表(例如 Amazon ECR)发送的错误消息特别有用,在许多情况下,启用调试模式是查看这些错误消息的唯一方式。

重要

此过程是针对Amazon ECS-optimized Amazon Linux AMI 编写的。对于其他操作系统,请参阅 Docker 文档中的启用调试使用 systemd 控制和配置 Docker

在Amazon ECS-optimized Amazon Linux AMI 上启用 Docker 守护程序调试模式

  1. 连接到您的容器实例。有关更多信息,请参阅 连接到您的容器实例

  2. 使用文本编辑器(例如 vi)打开 Docker 选项文件。对于Amazon ECS-optimized Amazon Linux AMI,Docker 选项文件位于 /etc/sysconfig/docker 中。

  3. 查找 Docker 选项语句并将 -D 选项添加到用引号引起的字符串。

    注意

    如果 Docker 选项语句以 # 开头,则您需要删除该字符,以取消语句的注释并启用选项。

    对于Amazon ECS-optimized Amazon Linux AMI,Docker 选项语句称作 OPTIONS。例如:

    # Additional startup options for the Docker daemon, for example: # OPTIONS="--ip-forward=true --iptables=true" # By default we limit the number of open files per container OPTIONS="-D --default-ulimit nofile=1024:4096"
  4. 保存文件并退出您的文本编辑器。

  5. 重新启动 Docker 守护程序。

    sudo service docker restart

    输出:

    Stopping docker: [ OK ] Starting docker: . [ OK ]
  6. 重新启动 Amazon ECS 代理。

    sudo start ecs

现在,您的 Docker 日志应显示更详细的输出。例如:

time="2015-12-30T21:48:21.907640838Z" level=debug msg="Unexpected response from server: \"{\\\"errors\\\":[{\\\"code\\\":\\\"DENIED\\\",\\\"message\\\":\\\"User: arn:aws:sts::1111:assumed-role/ecrReadOnly/i-abcdefg is not authorized to perform: ecr:InitiateLayerUpload on resource: arn:aws:ecr:us-east-1:1111:repository/nginx_test\\\"}]}\\n\" http.Header{\"Connection\":[]string{\"keep-alive\"}, \"Content-Type\":[]string{\"application/json; charset=utf-8\"}, \"Date\":[]string{\"Wed, 30 Dec 2015 21:48:21 GMT\"}, \"Docker-Distribution-Api-Version\":[]string{\"registry/2.0\"}, \"Content-Length\":[]string{\"235\"}}"