

# Diagnóstico do Docker no Amazon ECS
<a name="docker-diags"></a>

O Docker oferece várias ferramentas de diagnóstico que ajudam a solucionar problemas com os contêineres e as tarefas. Para obter mais informações sobre todos os utilitários de linha de comando do Docker, consulte o tópico [Referência da linha de comando do Docker](https://docs.docker.com/reference/cli/docker/) na documentação do Docker. É possível acessar os utilitários de linha de comando do Docker se conectando a uma instância de contêiner usando SSH.

Os códigos de saída que os contêineres do Docker relatam também podem fornecer algumas informações de diagnóstico (por exemplo, código de saída 137 significa que o contêiner recebeu um sinal `SIGKILL`). Para obter mais informações, consulte [Status de saída](https://docs.docker.com/reference/cli/docker/container/run/#exit-status) na documentação do Docker.

## Listagem de contêineres do Docker no Amazon ECS
<a name="docker-ps"></a>

É possível usar o comando **docker ps** na instância de contêiner para listar os contêineres em execução. No exemplo a seguir, somente o agente de contêiner do Amazon ECS está em execução. Para obter mais informações, consulte [docker ps](https://docs.docker.com/reference/cli/docker/#ps) na documentação do Docker.

```
docker ps
```

Resultado:

```
CONTAINER ID        IMAGE                            COMMAND             CREATED             STATUS              PORTS                        NAMES
cee0d6986de0        amazon/amazon-ecs-agent:latest   "/agent"            22 hours ago        Up 22 hours         127.0.0.1:51678->51678/tcp   ecs-agent
```

É possível usar o comando **docker ps -a** para ver todos os contêineres (até mesmo contêineres parados ou encerrados). Isso é útil para listar contêineres que estejam parando inesperadamente. No exemplo a seguir, o contêiner `f7f1f8a7a245` saiu há 9 segundos. Portanto, ele não aparece em uma saída **docker ps** sem o sinalizador `-a`.

```
docker ps -a
```

Resultado:

```
CONTAINER ID        IMAGE                                       COMMAND                CREATED             STATUS                        PORTS                        NAMES
db4d48e411b1        amazon/ecs-emptyvolume-base:autogenerated   "not-applicable"       19 seconds ago                                                                 ecs-console-sample-app-static-6-internalecs-emptyvolume-source-c09288a6b0cba8a53700
f7f1f8a7a245        busybox:buildroot-2014.02                   "\"sh -c '/bin/sh -c   22 hours ago        Exited (137) 9 seconds ago                                 ecs-console-sample-app-static-6-busybox-ce83ce978a87a890ab01
189a8ff4b5f0        httpd:2                                     "httpd-foreground"     22 hours ago        Exited (137) 40 seconds ago                                ecs-console-sample-app-static-6-simple-app-86caf9bcabe3e9c61600
0c7dca9321e3        amazon/ecs-emptyvolume-base:autogenerated   "not-applicable"       22 hours ago                                                                   ecs-console-sample-app-static-6-internalecs-emptyvolume-source-90fefaa68498a8a80700
cee0d6986de0        amazon/amazon-ecs-agent:latest              "/agent"               22 hours ago        Up 22 hours                   127.0.0.1:51678->51678/tcp   ecs-agent
```

## Visualização de logs do Docker no Amazon ECS
<a name="docker-logs"></a>

É possível visualizar os fluxos `STDOUT` e `STDERR` para um contêiner com o comando **docker logs**. Neste exemplo, os logs são exibidos para o contêiner *dc7240fe892a* e direcionados por meio do comando **head** para agilizar. Para obter mais informações, vá até [docker logs](https://docs.docker.com/reference/cli/docker/#logs) na documentação do Docker.

**nota**  
Os logs do Docker estarão disponíveis na instância do contêiner apenas se você estiver usando o driver de logs `json` padrão. Se você tiver configurado as tarefas para usar o driver de logs `awslogs`, os logs do contêiner estarão disponíveis no CloudWatch Logs. Para obter mais informações, consulte [Envio de logs do Amazon ECS para o CloudWatch](using_awslogs.md).

```
docker logs dc7240fe892a | head
```

Resultado:

```
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.11. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.11. Set the 'ServerName' directive globally to suppress this message
[Thu Apr 23 19:48:36.956682 2015] [mpm_event:notice] [pid 1:tid 140327115417472] AH00489: Apache/2.4.12 (Unix) configured -- resuming normal operations
[Thu Apr 23 19:48:36.956827 2015] [core:notice] [pid 1:tid 140327115417472] AH00094: Command line: 'httpd -D FOREGROUND'
10.0.1.86 - - [23/Apr/2015:19:48:59 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:48:59 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:49:28 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:49:29 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:49:50 +0000] "-" 408 -
10.0.0.154 - - [23/Apr/2015:19:49:50 +0000] "-" 408 -
10.0.1.86 - - [23/Apr/2015:19:49:58 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:49:59 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:50:28 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:50:29 +0000] "GET / HTTP/1.1" 200 348
time="2015-04-23T20:11:20Z" level="fatal" msg="write /dev/stdout: broken pipe"
```

## Inspeção de contêineres do Docker no Amazon ECS
<a name="docker-inspect"></a>

Caso tenha o ID do Docker de um contêiner, você pode inspecioná-lo com o comando **docker inspect**. A inspeção de contêineres apresenta a visão mais detalhada do ambiente no qual um contêiner foi ativado. Para obter mais informações, consulte [docker inspect](https://docs.docker.com/reference/cli/docker/#inspect) na documentação do Docker.

```
docker inspect dc7240fe892a
```

Resultado:

```
[{
    "AppArmorProfile": "",
    "Args": [],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "httpd-foreground"
        ],
        "CpuShares": 10,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/apache2/bin",
            "HTTPD_PREFIX=/usr/local/apache2",
            "HTTPD_VERSION=2.4.12",
            "HTTPD_BZ2_URL=https://www.apache.org/dist/httpd/httpd-2.4.12.tar.bz2"
        ],
        "ExposedPorts": {
            "80/tcp": {}
        },
        "Hostname": "dc7240fe892a",
...
```