이미지에는 OS, 구성요소,프로그램이 포함
백업과 비슷하지만 사이즈는 상대적으로 작다
Image = 특정 시점의 파일 시스템을 저장한 압축 파일
프로그램(=Image) : CPU, memory 같은 리소스 사용X, disk 공간만 차지
프로세스(=container) : 프로그램을 실행한 것으로 CPU, memory를 사용한다
Metadata(메타데이터) : 이미지에 대한 정보를 기술하는 데이터
Env : 소프트웨어가 실행시 참조할 설정 정보 ex) VERSION=1.23.2 (KEY = VALUE)
Cmd : 이미지를 컨테이너로 실행할 때 Cmd에 있는 명령어를 통해 어떤 프로그램을 실행할지를 meta data에서 결정
// 이미지의 세부 정보 조회
docker image inspect 이미지명
//컨테이너의 세부 정보 조회
docker container inspect 컨테이너명
//컨테이너 실행 시 메타데이터의 cmd 덮어쓰기
docker run 이미지명 (실행명령)
//컨테이너 실행 시 메타데이터의 env 덮어쓰기
docker run --env KEY=VALUE 이미지명
//파일의 내용을 출력
cat 파일경로
- 리눅스에서 제공되는 기본 명령어 중 하나
- 파일의 내용을 출력하고 종료되는 일회성 명령어
//종료된 컨테이너까지 모두 확인
docker ps -a
//컨테이너를 백그라운드에서 실행할 수 있게 함
docker run -d 이미지명
- -d 옵션 추가시 -> 지속적으로 실행되는 데몬 프로그램을 실행할 때 적합
- -d 옵션 제거 시 -> 실행 후 종료되는 프로그램에 적합, 실시간으로 로그를 확인할 경우
- ex) -d 옵션을 주지 않으면 nginx 같은 경우 커멘드로 돌아오지 않고 지속적으로 로그가 출력되어 더 이상 명령어를 실핼할 수 없음
결과적으로 이미지를 컨테이너로 실행하면 이미지의 파일과 메타데이터가 컨테이너로 만들어지면서 메타데이터의 Env에 정의되어 있는 환경 변수가 사용되고 Cmd에 정의되어 있는 명령어로 프로그램을 실행한다. 그리고 Env와 Cmd는 실행할 때 덮어쓰기가 가능하기 때문에 이 내용을 수정해서 같은 이미지에서 다른 결과를 도출할 수 있다.
컨테이너의 라이프사이클
docker run 은 docker create와 docker start가 하나로 합쳐진 명령어
실행상태부터 CPU와 memory를 사용하기 시작함
docker restart 명령을 실행하면 10초뒤에 프로세스가 재시작하게 됨
일시 중지한다는 것은 컨테이너에서 실행 중인 모든 프로세스가 일시 중지된 상태이며 현재의 상태를 모두 메모리에 저장해 두는 것
이 상태에서는 CPU는 사용하지 않고 memory만 사용하게 됨
종료상태에서는 CPU와 memory 사용이 모두 중단되며 종료된 컨테이너를 다시 시작하면 컨테이너의 프로세스가 처음부터 다시 실행
로그 확인하기
//컨테이너의 로그 조회
docker logs 컨테이너명
//로그 지속적으로 확인 (컨트롤 + c 를 누르면 빠져나옴)
docker logs -f 컨테이너명
//컨테이너를 실행 및 출력 연결
docker start -i 컨테이너명
이미지 레지스트리
- 이미지를 저장하는 저장소
Dockerhub -> 가장 많이 사용되는 Public Image Registry
이미지 레지스트리의 다양한 기능
- 이미지 공유 : 이미지를 다운로드하고 업로드
- 이미지 검색
- 이미지 버전 관리 : 특정 버전의 이미지를 지정해서 다운 가능, 원하는 사용자만 이미지를 다운받을 수 있도록 인증 처리와 권한 관리 기능도 제공
- 보안 : 안전한 이미지를 다운 받을 수 있도록 업로드된 이미지의 보안을 검증
- 파이프라인 : DevOps 파이프라인 기능과 연계해서 이미를 업로드했을 때 자동으로 배포가 이루어질 수 있도록 연계 기능이나 알림 기능 제공
이미지 네이밍 규칙
도커 업로드 및 다운로드 명령어
//로컬 스토리지로 이미지 다운로드
docker pull 이미지명
//로컬스토리지의 이미지명 추가
docker tag 기존이미지명 추가할이미지명
//이미지 레지스트리에 이미지 업로드
docker push 이미지명
//이미지 레지스트리 인증 정보 생성
docker login
//이미지 레지스트리 인증 정보 삭제
docker logout
//로컬 스토리지의 이미지 삭제
docker image rm 이미지명
'Docker' 카테고리의 다른 글
[Docker] 4. 이미지 빌드 (0) | 2024.03.17 |
---|