본문 바로가기
DevOps

Docker : summary() { Docker의 등장 배경, 기본 용어와 원리 }

by yaans 2024. 4. 9.

소프트웨어 운영 플랫폼의 흐름

하드웨어 가격은 내려가고 성능은 좋아진다.
운영 서비스는 대용량이 되어간다.

 

  1. 물리 서버 (Bare Metal)
    • 하나의 물리 서버에 다양한 서비스를 함께 관리
    • 하나의 서버에 여러 서비스가 있어서 관리가 어려우며, 서로의 환경설정이 충돌할 가능성
  2. 가상화 기술 (Hypervisor)
    • 하나의 서버에 가상 머신을 만들고 가상머신 안에 각 애플리케이션을 배포하고 운영
    • 서비스 운영 관리가 쉬워졌으나, 서비스 환경에서는 Scale-In & Scale-Out가 요구되기 시작
  3. Container Engine
    • OS 위에 컨테이너 엔진을 올려 플랫폼 역할을 하며 컨테이너 서비스들을 관리
    • 컨테이너는 애플리케이션과 애플리케이션을 운영하기 위한 최소한의 환경만 포함되어 있기 때문에 용량이 적다
    • 따로 분리되어 있는 환경과 쉽게 확장할 수 있는 구조

 

Linux와 관계

  • 도커는 리눅스 커널의 기능으로 구성되어있다
  • 도커가 활용한 리눅스 커널 기능
    • chroot : 독립된 공간 형성
    • namespace : 분리된 환경 지원
    • cgroup : 필요한 만큼의 HW 지원

 

Docker 사용 이유

  • 과거 일반 애플리케이션의 경우 개발 환경과 실제 운영 환경이 달라 어려움이 있었다
  • 개발자가 개발한 그대로 운영환경에 배포할 수 있다
  • 확장성 : 요구사항에 맞춰 서비스의 확장, 축소가 쉬워졌다

 

컨테이너와 컨테이너 이미지

  • Docker Host : Docker Daemon이 실행되고 있는 linux 커널이 있는 환경
  • container image(READ-ONLY) -> 실행 -> container (READ&WRITE)
  • 컨테이너 이미지 레이어 예시
    • base image
    • source code
    • execute command
  • hub에서 컨테이너 이미지 검색 후 실행 프로세스
      docker search nginx
      docker pull nginx:lastet
      docker run -d --name web -p 80:80 nginx:latest

 

Docker 저장소 용어

  • Registry
    • 도커 이미지를 관리하는 공간
    • Docker Hub, Private Docker Hub, 회사 내부용 등
    • default registry : Docker Hub
  • Repository
    • 레지스트리 내에 도커 이미지가 저장되는 공간
    • Github의 레파지토리와 비슷한 역할
  • Tag
    • 같은 이미지 내 버전관리 용도

 


 

Docker 라이프사이클 관련 명령어

# 컨테이너 상태 확인
docker ps

# 이미지를 사용해 컨테이너 생성 & 실행 
docker run -d {image-name}

# 기존에 중지되어 있었던 컨테이너 실행
docker start {container-id} || {container-name}

# 원격 저장소에 있는 이미지 내려받기
docker pull {image-name}

# 로컬에 저장된 이미지 확인
docker image ls

# 컨테이너 중지
docker stop {container-id} || {container-name}

# 이미지 삭제
docker rmi {image-name}

 

Docker 관리 관련 명령어

# 컨테이너 내부에 실행 중인 프로세스 출력
docker top {container-id} || {container-name}

# 컨테이너 로그 확인
docker logs {container-id} || {container-name}

# 현재 컨테이너에 추가 명령어를 더 설정하고 싶을 때, bash에서 설정
docker exec {container-id} || {container-name} /bin/bash

 


Dockerfile 상세 내용 참고

https://code-with-me.tistory.com/21

 

Docker : Dockerfile() { Dockerfile 명령어 정리, Dockerfile 빌드 }

Dockerfile 명령어 정리 Container 에는 { 개발한 애플리케이션의 실행 파일 + 운영 환경 } 조합이 들어가야 한다 Dockerfile = container를 만들 수 있도록 도와주는 명령어 집합 컨테이너 이미지를 생성할

code-with-me.tistory.com

 

Docker Layer 구분

  • hub에서 docker 컨테이너 이미지 불러오기
# 이미지 내려받기 
docker search nginx 
docker pull nginx 

# pull 받은 이미지는 다음 명령어로 확인 가능하다 
docker image ls

 

  • 이미지는 여러 레이어로 구성되어 있다
    • root 계정의 /var/lib/docker/overlay2에 검색&불러오기 한 이미지의 레이어들이 저장되어 있다
    •  /var/lib/docker/overlay2 내부 레이어의 개수는 search&pull 실행한 이미지의 레이어 개수와 일치한다

 

확인

  • 레이어 저장 위치 /var/lib/docker/overlay2

 

  • nginx의 이미지 레이어 : 7개

 

  • 이미지 저장 경로 /var/lib/docker/overlay2 에 생성된 이미지 레이어 개수 : 7개

 

7개로 각각  레이어 개수가 같다 

댓글