Amazon ECS의 Docker 진단 - Amazon Elastic Container Service

Amazon ECS의 Docker 진단

Docker는 컨테이너 및 작업 문제 해결에 도움이 되는 몇 가지 진단 도구를 제공합니다. 사용 가능한 모든 도커 명령줄 유틸리티에 대한 자세한 내용은 도커 설명서의 도커 명령줄 섹션을 참조하세요. SSH를 사용하여 컨테이너 인스턴스에 연결하면 Docker 명령줄 유틸리티에 액세스할 수 있습니다.

Docker 컨테이너가 보고하는 종료 코드도 일부 진단 정보를 제공할 수 있습니다(예를 들어 종료 코드 137은 컨테이너가 SIGKILL 신호를 수신했음을 뜻합니다). 자세한 내용은 도커 설명서의 종료 상태를 참조하세요.

Amazon ECS에 Docker 컨테이너 나열

컨테이너 인스턴스에서 docker ps 명령을 사용하여 실행 중인 컨테이너를 나열할 수 있습니다. 다음 예제에서는 Amazon ECS 컨테이너 에이전트만 실행 중입니다. 자세한 내용은 도커 설명서의 docker ps를 참조하세요.

docker ps

출력:

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

docker ps -a 명령을 사용하면 모든 컨테이너를(심지어 중지됐거나 사망한 컨테이너도) 볼 수 있습니다. 이것은 예기치 않게 중지되는 컨테이너를 나열하는 데 유용합니다. 다음 예제에서 컨테이너 f7f1f8a7a245는 9초 전에 종료됐기 때문에 -a 플래그 없이 docker ps 출력에 나타나지 않습니다.

docker ps -a

출력:

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

Amazon ECS에서 Docker 로그 보기

docker logs 명령을 사용하여 컨테이너의 STDOUTSTDERR 스트림을 볼 수 있습니다. 이 예제에서 로그는 dc7240fe892a 컨테이너에 대해 표시되고 간결성을 위해 head 명령을 통해 파이프됩니다. 자세한 내용은 Docker 설명서의 docker logs를 참조하세요.

참고

기본 json 로그 드라이버를 사용 중인 경우에는 Docker 로그를 컨테이너 인스턴스에서만 사용할 수 있습니다. awslogs 로그 드라이버를 사용하도록 태스크를 구성한 경우에는 컨테이너 로그를 CloudWatch Logs에서 사용할 수 있습니다. 자세한 내용은 Amazon ECS 로그를 CloudWatch로 전송 섹션을 참조하세요.

docker logs dc7240fe892a | head

출력:

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"

Amazon ECS에서 Docker 컨테이너 검사

컨테이너의 Docker ID가 있다면 docker inspect 명령을 사용하여 검사할 수 있습니다. 컨테이너 검사는 컨테이너가 시작된 환경에 대한 가장 상세한 보기를 제공합니다. 자세한 내용은 도커 설명서의 docker inspect를 참조하세요.

docker inspect dc7240fe892a

출력:

[{ "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", ...