4.2. 컨테이너화된 서비스 문제 해결
오버클라우드 배포 중 또는 이후에 컨테이너화된 서비스가 실패하는 경우 다음 권장 사항을 사용하여 실패의 근본 원인을 확인합니다.
이러한 명령을 실행하기 전에 오버클라우드 노드에 로그인되어 있고 언더클라우드에서 이 명령을 실행하지 않는지 확인합니다.
컨테이너 로그 확인
각 컨테이너는 메인 프로세스의 표준 출력을 유지합니다. 이 출력은 컨테이너 실행 중에 실제로 수행되는 작업을 확인하는 데 도움이 되는 로그 역할을 합니다. 예를 들어 keystone
컨테이너의 로그를 보려면 다음 명령을 사용합니다.
$ sudo docker logs keystone
대부분의 경우 이 로그는 컨테이너 실패의 원인을 제공합니다.
컨테이너 검사
컨테이너 정보를 확인해야 하는 경우가 있습니다. 예를 들어 다음 명령을 사용하여 keystone
컨테이너 데이터를 확인합니다.
$ sudo docker inspect keystone
낮은 수준의 구성 데이터를 포함하는 JSON 오브젝트를 제공합니다. 출력을 jq
명령으로 전달하여 특정 데이터를 구문 분석할 수 있습니다. 예를 들어 keystone
컨테이너에 대한 컨테이너 마운트를 보려면 다음 명령을 실행합니다.
$ sudo docker inspect keystone | jq .[0].Mounts
또한 --format
옵션을 사용하여 단일 행에 대한 데이터를 구문 분석할 수 있으며 이는 컨테이너 데이터 세트에 대해 명령을 실행할 때 유용합니다. 예를 들어 keystone
컨테이너 실행에 사용된 옵션을 재생성하려면 --format
옵션과 함께 다음 inspect
명령을 사용합니다.
$ sudo docker inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone
--format
옵션은 쿼리를 생성할 때 Go 구문을 사용합니다.
docker run
명령과 함께 이러한 옵션을 사용하여 문제 해결을 위해 컨테이너를 재생성합니다.
$ OPTIONS=$( sudo docker inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone ) $ sudo docker run --rm $OPTIONS /bin/bash
컨테이너에서 명령 실행
특정 Bash 명령을 통해 컨테이너 내부 정보를 가져와야 하는 경우가 있습니다. 이 경우 다음 docker
명령을 사용하여 실행 중인 컨테이너 내에서 명령을 실행합니다. 예를 들어 keystone
컨테이너에서 명령을 실행하려면 다음을 실행합니다.
$ sudo docker exec -ti keystone <COMMAND>
-ti
옵션은 대화식 가상 터미널(pseudoterminal)에서 명령을 실행합니다.
< ;COMMAND>
;를 원하는 명령으로 교체합니다. 예를 들어 각 컨테이너에는 서비스 연결을 확인하기 위한 상태 점검 스크립트가 있습니다. 다음 명령을 사용하여 keystone
에 대해 상태 점검 스크립트를 실행할 수 있습니다.
$ sudo docker exec -ti keystone /openstack/healthcheck
컨테이너 쉘에 액세스하려면 명령으로 /bin/bash
를 사용하여 docker exec
를 실행합니다.
$ sudo docker exec -ti keystone /bin/bash
컨테이너 내보내기
컨테이너가 실패하면 파일의 전체 콘텐츠를 확인해야 합니다. 이 경우 컨테이너의 전체 파일 시스템을 tar
아카이브로 내보낼 수 있습니다. 예를 들어 keystone
컨테이너 파일 시스템을 내보내려면 다음 명령을 실행합니다.
$ sudo docker export keystone -o keystone.tar
이 명령은 keystone.tar
아카이브를 생성하여 추출 및 확인할 수 있습니다.