使用 Docker 调试输出 - Amazon Elastic Container Service

使用 Docker 调试输出

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

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

重要

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

在经 Amazon ECS 优化的 Amazon Linux AMI 上启用 Docker 进程守护程序调试模式
  1. 连接到您的容器实例。

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

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

    注意

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

    对于经 Amazon ECS 优化的 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 service ecs restart

现在,您的 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\"}}"