Docker/Docker file 사용법 익히기

[Docker File 익히기] 4. docker logs, kill 명령어와 CMD 변경 사용해보기

Fletcher 2024. 8. 14. 09:31

 

반갑습니다!

이번 포스트에서는 가끔 사용 되는 docker 명령 두 개와

CMD 변경에 대해서 알아보겠습니다 ^^

 

 

 

 

먼저 $ docker logs [컨테이너ID 또는 이름]

명령어를 사용하면 로그를 조회할 수 있습니다 ^^

 

현재 해당 컨테이너의 안에는 apache 웹 서버가 구동 중이기 때문에

GET 방식의 HTTP 로그가 조회되는 것을 볼 수 있겠습니다!

 

 

 

 

두 번째는 $ docker kill [컨테이너ID 또는 이름] 명령어입니다 ^^

 

컨테이너 구동을 중지시키는 명령어로 docker stop이 있었는데요

docker stop은 현재 컨테이너를 즉시 중단하진 않고,

현재 실행중인 단계까지는 기다린 후에 중지를 시켰기 때문에

해당 명령어를 입력하면 몇 초정도 기다린 다음에 처리가 되는 것을 알 수가 있었습니다

 

이에 반해 docker kill은 현재 실행중인 단계가 있더라도 즉시 중지를 시켜서

STATUS가 Exited로 바뀌는 것을 볼 수 있습니다 ^^ 

 

 

다음으로 CMD 변경에 대한 내용을 알아보기 위해

vi 편집기를 이용해서 dockerfile을 수정해보겠는데요

 

기존에는 CMD 부분에 ["/bin/sh", "-c", "httpd-foreground"]라고 입력을 했었습니다

이 부분을 일부 수정하여서 이미지와 같이 기재하고 컨테이너를 생성해보겠습니다 ^^

 

 

 

해당 dockerfile로 컨테이너를 생성하니 분명 백그라운드로 실행을 시키고자 했음에도

STATUS가 바로 Exited 되는 것을 볼 수가 있습니다 ^^

 

무엇이 문제일까요?

 

제일 먼저로는, 일단 해당 컨테이너에 사용된 이미지는 웹 서버입니다

그렇기 때문에 httpd-foreground 명령어가 있어야 하는데,

해당 명령어가 없기 때문에 웹 서버가 구동되지 않습니다 ^^;;

 

그리고 두 번째로는,

/bin/sh 쉘을 열고자 했다면 docker run 명령시 -it 옵션을 이용해서

외부 호스트의 키보드를 내부 프로그램의 표준 입력(STDIN)으로 연결을 시켜줬어야 하는데,

docker run 명령시 해당 옵션을 사용하지 않았기 때문에 쉘도 동작을 하지 않았으므로

컨테이너가 생성되자마자 바로 실행이 종료된 것이었습니다 ^^;;

 

 

 

해서 해당 웹서버에 접근해도

브라우저에서 "사이트에 연결할 수 없다"는 메세지가 출력됩니다 ^^

 

 

 

 

다시 vi 편집기를 이용해서 dockerfile을 수정하고

이미지를 빌드하고 컨테이너를 생성하는 단계를 거쳐도 되지만,

아예 docker run 명령 입력시에 위 이미지와 같이

맨 끝에다가 해당 명령어를 입력하면 CMD가 덮어씌워져서 적용됩니다 ^^

 

 

 

해당 컨테이너를 생성한 다음에 docker inspect 명령어를 통해 상세한 정보를 조회해보면,

Cmd 부분에 dockerfile의 설정과는 달리 docker run 명령 입력시

설정한 CMD 명령이 적용되어 있는 것을 확인할 수 있습니다 ^^!

 

 

 

 

이번 포스트에서는

$ docker logs$ docker kill 두 개의 명령어와

CMD 변경에 대해서 알아보았습니다!

 

다음 포스트에 이어서 계속 dockerfile과 관련된

주요 내용들을 살펴보도록 하겠습니다 ^^