도커 컨테이너 기초.

안상운·2025년 2월 10일

Docker

목록 보기
10/14
post-thumbnail

컨테이너 기초.

1. 도커

• 리눅스 컨테이너에 여러기능을 추가
• 애플리케이션을 컨테이너로 좀더 쉽게 사용할 수 있게 만든 오픈소스 프로젝트
• 2013년 3월 dotCloud 창업자 Solomon Hykes 가 Pycon Conference 에서 발표
• Go 언어로 작성 된 "The future of linux Containers"
• 가상 머신과 달리 성능손실이 거의 없는 차세대 클라우드 솔루션으로 주목

2. 로컬머신 vs 가상머신 vs 컨테이너

로컬머신 : IDC
가상머신 : vmware, utm
컨테이너 : aws

3. 가상머신과 도커 컨테이너.

  • 가상머신
    • 한이퍼바이저를 통한 상화로 성능 손실이 발생
    • 완벽한 독립적 공간을 생성 하나, 이미지 용량이 크고 가상머신 배포에 부담

  • 도커 컨테이너
    • 리눅스 Chroot, 네임스페이스, Cgroup 를 사용한 프로세스 단위 격리 환경 구성
    • 애플리케이션 구동을 위한 라이브러리만 포함한 이미지생성, 용량이 작음

4. LXC(Linux Container)

  • 리눅스 커널에 구현되어 있는 기술로, 여러 기술을 조합하여 자원과 사용자를
    분리하는 기능
  • chroot(change root) : 특정 디렉터리를 최상위 디렉터리 root로 인식하게 설정하는 리눅스 명령
  • Cgroup(Control group)
    시스템의 CPU, 메모리, 1O, 네트워크 대역폭 등의 자원을 제한하고 격리 하는 기능
    특정 애플리케이션의 과도한 자원 사용을 제한 하는데 사용 가능
  • Namespace
    - 시스템 리소스를 해당 프로세스에만 해당되는 자원처럼 보이도록 하고, 다른
    프로세스와 격리시키는 가상화 기능
    - 프로세스 자원을 관리하는 기능으로, mnt, pid, net, ipc, user등의 자원을 그룹화하여
    할당하는 기능

5. 컨테이너 기술의 장점

• 하이퍼바이저와 게스트 OS가 없기 때문에 경량화 되었다.
• 경량이기 때문에, 이미지 복제, 이관, 배포가 쉽고 효율적이다
• 게스트 OS를 부팅하지 않기 때문에 container 수행 시간이 빠르다
• 한정된 하드웨어 자원안에서 vm보다 더 많은 container를 실행할 수
있어서 효율적이다.

6. 도커 이미지와 컨테이너

도커이미지

• 가상머신 생성시 사용하는 ISO 와 비슷한 개념의 이미지
• 여러 개의 층으로 된 바이너리 파일로 존재
• 컨테이너 생성시 읽기 전용으로 사용됨
• 도커 명령어로 레지스트리로 부터 다운로드 가능
luckyprice/ubuntu: 14.04

• 저장소 이름 : 이미지가 저장된 장소, 이름이 없으면 도커 허브(Docker Hub)로 인식
• 이미지 이름 : 이미지의 역할을 나타낼 이름, 생략 불가능
• 이미지 버전 : 이미지 버전정보, 생략하면 latest 로 인식

도커컨테이너

• 도커 이미지로 부터 생성됨
• 격리된 파일시스템, 시스템 자원, 네트워크를 사용할 수 있는 독립공간 생성
• 도커 이미지 목적에 맞게 컨테이너를 생성하는 것이 일반적 - 예) 웹 서버 도커 이미지로 부터 여러개의 컨테이너 생성 = 개수만큼의 웹서버
• 이미지를 읽기 전용으로 사용, 이미지 변경 데이터는 컨테이너 계층에 저장
• 컨테이너의 애플리케이션 설치/삭제는 다른 컨테이너에 영향이 없음 - 예) 우분투 이미지로 별도의 컨테이너 생성 후 Apache Mysal 설치/삭제 가능

도커컨테이너 다루기

• run: 컨테이너 실행
• -i : 컨테이너와 상호 입출력 가능 옵션
• -t : 셀을 사용할 수 있는 tty 활성화

• exit 또는 Ctl+D : 컨테이너 빠져나오면서, 컨테이너 정지
• CtltP,Q : 컨테이너 정지 하지 않고 빠져 나오기



0 ps: 현재 실행중인 목록 출력
o ps-a : 모든 컨테이너 목록 출력

  • IMAGE : 컨테이너 생성시 사용된 이미지 이름
  • COMMAND : 컨테이너 시작시 실행될 명령어 (기본 내장된 명령어/bin/bash)
  • CREATED : 컨테이너가 생성된 이후 시간
  • STATUS : 컨테이너 상태 (UP : 실행중, Exited : 중지됨, Pause : 일시중지)
  • PORTS : 컨테이너가 오픈한 포트와 호스트에 연결 상태
  • NAMES : 컨테이너 고유 이름, 중복 불가능, 변경가능

실수로 port를 안 열고 container 를 실행 시켰다면!
1) 기존의 container를 stop시키고, 다시 -p 옵션으로 run한다.
2) 이미 container 내부에서 추가 작업이 많았다면, 해당 container를
image
화 한다. (docker commit) 그리고, 다시 -p 옵션으로 run한다.

7. docker hub

7. docker image 생성 방법.

  1. 현재 구동중인 Container에 있는 그대로 image로 만드는 방법
  2. Dockerfile을 이용하여 생성을 선언하는 방법

도커 이미지 생성 방법 1

• 컨테이너로 이미지 생성 방법
1. 기본 OS 이미지로 컨테이너 생성
2. 애플리케이션 설치 및 환경설정, 소스코드 복제
3. 컨테이너 이미지 커밋(Commit)

✓ 애플리케이션 설치, 환경구성 변경 등을 직접 수작업
✓ 애플리케이션 구동 이미지로 커밋하기 때문에 이미지 동작을 보장

도커 이미지 생성 방법 2

• Dockerfile로 이미지 생성 방법
1. 매뉴얼 작업을 기록한 Dockerfile 생성
2. 빌드 명령어가 Dockerfile 을 읽어 이미지를 생성

✓ 이미지를 직접 생성 또는 커밋 하지 않아도 됨
✓ 애플리케이션 빌드를 자동화
✓ 도커 허브의 신뢰할 수 있는 이미지를 바탕으로 쉽게 이미지 배포 가능
✓ Text 파일을 배포하므로, 경량화

0개의 댓글