본문 바로가기

IT 인프라

도커 구성요소, 이미지와 컨테이너, 명령어 그리고 컨테이너 다루기 위한 기능(엔트리포인트, 로그 등)

728x90

본 포스팅 범위

도커 구성요소, 도커 이미지와 컨테이너,

도커 컨테이너 기본 명령어, 라이프사이클

도커 컨테이너 다루기(엔트리포인트, 커맨드),

도커 다루기(dockerfile, 로그)


 

도커 구성요소 

Client에서 명령어(build, pull, run) 입력시 DOCKER_HOST가 도커 엔진이 띄워져 있는 서버로 pull 명령어로 remote 하거나 build한다. 이미지, 컨테이너를 관리한다. 이미지 pull하는 원천은 Registry(이미지 저장소)로 이미지 저장소에서 공유된 이미지를 로컬 도커 호스트에 저장하고 실행시키면 컨테이너가 된다. 

도커의 구성요소, 출처 : Warehaus(https://armin.tistory.com)

 

도커 이미지와 컨테이너

도커는 리눅스 컨테이너 관리 기술이다.

 

이미지(Image)

컨테이너 생성시 필요 요소, 컨테이너 목적에 맞는 바이너리와 의존성이 설치되어 있음. 여러 계층으로 된 바이너리 파일로 존재한다.

 

컨테이너(Container)

호스트와 다른 컨테이너로부터 격리된 시스템 자원과 네트워크를 사용하는 프로세스. 이미지는 읽기 전용으로 사용해 변경사항은 컨테이너 계층에 저장한다. 따라서 컨테이너에서 무엇을 하든 이미지는 영향받지 않는다.

 

도커 이미지와 컨테이너 대응관계

이미지와 컨테이너 관계 비유, 출처 : 박병진 강사님 강의

도커 이미지 이름 구성

 

fastcampus/nginx:1.21

저장소이름(Repository Name), 이미지이름(Image Name), 이미지태그(Image Tag)

 

*pull, push시 저장소 이름 생략시 기본 저장소인 도커 허브로 인식하며, 태그 생략시 최신버전인 lastest로 인식함

 

도커 이미지 저장소(Image Repository)는 도커 이미지를 관리하고 공유하기 위한 서버 애플리케이션이다.

public 공개형 : docker hub, QUAY 등

private 비공개형 : docker Registry, AWS ECR 등

 

 

도커 컨테이너 관리

도커 컨테이너 라이프사이클

도커 컨테이너 라이프사이클, 출처 : 박병진 강사님 강의

컨테이너 시작, 시작 옵션

* 도커 create / run 명령어 모두 이미지가 없을 경우 자동으로 pull을 먼저 수행하여 이미지를 다운로드 받아야 함

$ docker create [ image ]    :   컨테이너 생성 

$ docker run [ image ]    :   컨테이너 생성 및 시작

$ docker start [ container ]    :   컨테이너 시작

 

컨테이너 상태확인

$ docker ps    : 실행 중 컨테이너 상태 확인

$ docker ps -a   :    전체 컨테이너 상태 확인

$ docker inspect [ container ]    :    특정 컨테이너 상세 정보 확인

 

컨테이너 일시중지 및 재개

$ docker pause [ container ]    :   컨테이너 일시중지 (docker ps로 확인할 때 (pause)로 표기된다.)

$ docker unpaus [ container ]    :    컨테이너 재개

 

컨테이너 종료

$ docker stop[ container ]    :    컨테이너 종료(SIGTERM 시그널 전달)

$ docker kill [ container ]    :    컨테이너 강제 종료(SIGKILL 시그널 전달)

$ docker stop $(docker ps -a -q)   :    모든 컨테이너 종료  ($(xxx)는 명령어의 결과를 return해 argu로 들어감)

 

컨테이너 삭제

$ docker rm [ container ]    :    컨테이너 삭제(실행 중 컨테이너 불가)

$ docker rm -f [ container ]    :    컨테이너 강제 종료 후 삭제(SIGKILL 시그널 전달)

$ docker run --rm ...    :    컨테이너 실행 종료 후 자동 삭제

$ docker container prune    :    중지된 모든 컨테이너 삭제

 

 

도커 컨테이너 다루기

엔트리포인트, 커맨드

엔트리 포인트(Entrypoint) : 도커 컨테이너 실행시 고정 실행되는 스크립트나 명령어. 생략시 커맨드에 지정된 명령어 수행

커맨드(Command) : 도커 컨테이너 실행시 수행할 명령어  or 엔트리포인트에 지정된 명려어에대한 인자 값

Dockerfile은 도커이미지 빌드시 사용 파일. 도커 컨테이너 실행시 엔트리 포인트, 커맨드 모두 변경 가능.

 

명령어 실행 docker exec

실행 중인 컨테이너에 명령어를 실행함.

도커 네트워크 드라이버

docker inspect 로 할당 IP를 포함한 세부내용 확인 가능, docker network ls 로 현재 활성화된 네트워크 확인 가능

docker ps로 컨테이너, 이미지상태 확인 가능

 

도커 컨테이너 다루기 : 로그

STDOUT / STDERR

보통 로그 사용시 해당 프레임 워크에서 사용하는 로그 프레임워크 표준을 출력한다.

syslog, 엘라스틱 서치 같은 외부 저장소로도가능하다.

그러나! 도커 애플리케이션 컨테이너에서 로그를 다룰땐 stdout, stderr 표준 출력/표준 에러 사용 가능하다. 도커는 다양한 logging driver를 제공한다. 자주 사용하는 로그 드라이버는 json-file. 한줄에 json 하나로 구성되는 형태이다.

 

$ docker logs [ container]  : 전체 로그 확인

$ docker logs --tail 10 [container]  : 마지막 로그 10줄 확인

$ docker logs -f [co n tainer] : 실시간 로그 스트림 확인  #

$ docker logs -f -t [container ] : 로그마다 타임스탬프 표시

 

호스트 OS의 로그 저장 경로

$ cat /var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-json.log

 

로그 용량 제한하기

컨테이너 단위로도, 도커 엔진 기본 설정 진행 가능(운영 환경 필수 설정임)

도커 로그 드라이버

끝.

 


패스트캠퍼스 박병진 강사님 강의 중 중요하다고 생각되는 부분을 정리합니다. 개인적 관점이 추가될 수 있습니다.

https://awess0me.tistory.com/43?category=1052679 

 

컨테이너 기술의 발전과 minikube 기본 명령어

본 포스팅 범위 컨테이너 기술의 발전, 배포 방식 변화( 전통적-가상화-컨테이너 배포) 도커와 쿠버네티스, 그리고 실습 위한 설치 프로그램(Docker for Desktop, kubectl, kustomize, minikube) 그리고 minikube

awess0me.tistory.com

 

728x90