Docker를 사용하여 필요한 container를 실행할때 종종 특정 문제로 자동 종료되는 문제가 발생한다.
어제 설정하던 aerospike에서 발생한 문제로 예를 들어보겠다.
$ sudo docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ce-5.7.0.11 --config-file /opt/aerospike/etc/aerospike.conf
c9f7eb263df0b0d0854df535f6dcb70251b3730696629618a4802b8e047daec9
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3efd82760b2c rabbitmq:management "docker-entrypoint.s…" 3 days ago Up 3 days 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp rabbitmq
위 내용은 서버 콘솔에 접속하여 aerospike container를 실행하고 실행된 컨테이너를 확인한 것이다.
aerospike가 리스트에 없는것을 확인할 수 있는데 그런경우 -a 옵션을 주면 모든 컨테이너 리스트를 확인 할 수 있다.
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9f7eb263df0 aerospike:ce-5.7.0.11 "/usr/bin/dumb-init …" 13 seconds ago Exited (1) 12 seconds ago aerospike
3efd82760b2c rabbitmq:management "docker-entrypoint.s…" 3 days ago Up 3 days 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp rabbitmq
f7f362458893 aerospike/amc "/opt/amc/amc ' -con…" 7 days ago Exited (2) 5 days ago aerospike-console
78a6c3b31e60 aerospike/aerospike-tools "wrapper aql -h" 7 days ago Exited (255) 7 days ago dazzling_wright
결과의 첫번째 항목이 실행하고자 하였던 container로 상태를 보면 Exited (1) 로 되어 있는것을 확인할 수 있다.
Exited (1)코드를 찾아보면 응용프로그램 오류로 인한 실패라고 한다. (다른 의견도 있으나 위의 경우와 가장 근접한 답인듯 함)
코드의 의미는 알았으나 정확한 원인은 알 수가 없다.
이런 경우 docker logs {container id} 명령어를 사용하면 컨테이너를 실행하면 발생한 오류 로그를 볼 수가 있다.
$ sudo docker logs c9f7eb263df0
link eth0 state up
link eth0 state up in 0
Mar 21 2022 09:20:06 GMT: CRITICAL (config): (cfg.c:2093) couldn't open configuration file /opt/aerospike/etc/aerospike.conf: No such file or directory
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:166) SIGINT received, shutting down Aerospike Community Edition build 5.7.0.11 os debian10
Mar 21 2022 09:20:06 GMT: WARNING (as): (signal.c:169) startup was not complete, exiting immediately
configuration 파일에 문제가 있어 실행이 되지 않았음을 알 수 있다.
내용을 수정하고 다시 시작하니 문제 없이 잘 동작 하였다.