320x100
320x100

출처 : https://data-newbie.tistory.com/516 

 

도커 란?

: 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징 하고 배포하는 오픈소스 프로그램

 

 

※ 컨테이너

: 소프트웨어의 가상화를 지원하는 시스템

: 컨테이너 런타임 위에 게스트 OS 없이 응용 프로그램을 올리는 방식

: 하드웨어와 운영체제에 대해 논리적인 가상화를 거치는 가상머신에 비해 가벼움

=> 사용할 프로그램에 대해서만 가상화

 

 

출처 : https://velog.io/@ckstn0777/%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

※ 컨테이너 VS 가상머신

: 별도의 가상화된 OS와 하드웨어 없이 도커 이미지 파일 실행을 통해 

  하나의 프로그램 처럼 가상환경을 구동

: 플랫폼에 상관없이 JAVA 프로그램이 작동하도록 하는 JVM처럼

  도커 엔진이라는 런타임 위에서 컨테이너라는 가상환경을 작동하는 방식

 

 

 

도커의 작동 방식

1. 호스트 운영체제에 도커 설치

2. 도커 파일 작성

: 이미지를 다운로드 하고 이미지를 컨테이너로 생성하여 실행가능

3. 작성한 도커 파일을 도커 이미지로 빌드

4. 빌드한 도커 이미지 파일을 컨테이너로 생성하여 실행 

 

 

 

도커의 장점

: 충돌 염려 없이 애플리케이션의 독립성을 보장할 수 있음

: 애플리케이션의 구동 환경을 도커 이미지 파일에 설정하여 운영서버에 전달하면 간단하게 배포 가능

: 컨테이너 당 하나의 기능만 제공하는 모듈로 만들면 MSA를 쉽게 구성 가능

 

  

 

도커의 활용

: Jenkins와 같은 CI툴을 통해 이미지를 빌드하고 버전별로 관리

: 도커로 생성한 이미지를 통해 CD를 하여 지속적으로 배포 가능

: Amazon Elastic Container Service / MS Azure Container Instances / GCP Kubernetes Engine

 

 

 

  

도커를 구성하고 있는 컴포넌트

ㆍDocker Engine

: 도커 이미지를 생성하고 컨테이너를 실행하는 핵심 컴포넌트

 

ㆍDocker Registry

: 도커 이미지 공개 및 공유. 도커 허브의 핵심 컴포넌트

 

ㆍDocker Compose

: 여러 컨테이너를 실행하고 관리하기 위한 툴

 

ㆍDocker Machine

: 로컬의 가상머신이나 퍼블릭 클라우드에서 도커 실행 환경을 구축하는 툴

 

ㆍDocker Swarm

: 여러 도커 호스트를 클러스터링 하여 컨테이너를 관리하는 컨테이너 오케스트레이션

 

 

 

도커를 이루는 기술

ㆍnamespace

: 내부에 존재하는 요소들을 구분하기 위한 식별자에 대한 유효범위

: 도커에서는 리눅스 커널의 namespace를 이용하여 작동

: 리눅스에는 PID / Network / UID / MOUNT / UTS / IPC 와 같은 네임스페이스가 있음

 

ㆍcgroups (Control Groups)

: 리눅스에서 프로세스와 쓰레드를 그룹화해서 관리하는 기술

: 호스트OS의 자원을 그룹별로 할당하거나 제한을 두는 등의 관리

: 컨테이너에서 사용하는 리소스를 제한하여 리소스 관리하는데 사용

: cpu / cpuacct (사용량) / cpuset (cpu및 메모리 배치제어) / memory / devices / 

  freezer (그룹 내 프로세스 정지 및 재개) / net_cls (네트워크 제어) / blkio (블록 디바이스 입출력량 제어)

 

 

 

컨테이너 네트워크 구성

: 컨테이너가 실행되면 172.17.0.0/16 이라는 프라이빗IP 주소가 eth0에 할당됨

 

ㆍdocker0

: 172.17.0.0/16라는 주소를 가지는 네트워크 브릿지

: 각 컨테이너의 NIC인 eth0에 가상 NIC인 veth를 할당하여 연결

: 외부의 요청을 컨테이너로 라우팅 

 

ㆍNAPT (Network Address Port Translation)

: 컨테이너와 외부 네트워크가 통신하기 위한 기술

: NAT와 달리 포트 정보까지 활용하여 여러 대의 머신을 연결

 

 

 

 

컨테이너의 데이터 관리 방법

ㆍvolumes

: 호스트의 파일 시스템 내 특정영역 (/var/lib/docker/volumes/)를 도커가 관리하고 사용하는 방법

: 도커가 아닌 다른 프로세스에서는 접근 불가한 영역

 

ㆍBind mounts

: 호스트의 파일 시스템 자체를 사용하는 방법

: 중요한 시스템 파일이나 디렉터리에 접근 가능

: 호스트와 컨테이너가 설정 파일을 공유하거나 호스트에서 개발하고 컨테이너로 배포하는 방식으로 사용

 

ㆍtmpfs mounts 

: 호스트의 메모리에 저장하는 방식

: 파일 시스템 대신 사용할때 사용

 

 

 

도커 이미지 레이어

: 도커 이미지는 Docker file로 만들어진 여러 레이어로 구성됨

: 각 레이어는 Read-Only

 

ㆍContainer Layer

: 이미지로 컨테이너를 생성할 때 임시적으로 생성되는 읽고 쓸 수 있는 컨테이너 레이어

: 컨테이너 내에서 작업한 사항을 commit 했을때에도 사용  

 

 

 

도커의 파일 관리

ㆍCopy on Write

: 도커의 파일 관리 방식으로, 읽기 시 기존 파일을 참조하고 수정 시에만 파일을 Container Layer로 복사하여

  수정하는 방법

: 필요한 경우에만 복사가 되므로 데이터 중복이 없고 효율적으로 사용 가능

 

ㆍStorage Driver

: 도커에서 레이어와 파일을 관리하기 위해 사용하는 드라이버

: 운영체제 별로 상이

: 참조 (https://docs.docker.com/storage/storagedriver/select-storage-driver/)

 

 

 

도커 에디션 및 릴리즈

ㆍDocker Community Edition (Docker CE)

: 도커 무료버전

: Edge 버전 (매달 업데이트 되는 새로운 기능을 먼저 사용할 수 있는 버전)

: Stable 버전 (분기별로 릴리즈 되는 안정적인 버전)

 

ㆍDocker Enterprise Edition (Docker EE)

: 도커의 유료버전

: 고객 지원 및 보안, 플러그인 추가 기능 제공

: CE와 같이 stable 버전이 배포됨

 

 

 

 

 

 

 

Refference

 

 

1장. 도커란 무엇인가?

이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)도커(Docker)란 리눅스 컨테이너를 기반으로

velog.io

 

10장. 도커파일(Dockerfile)

이 포스팅은 위키북스의 시작하세요! 도커/쿠버네티스 를 보고 공부한 내용을 바탕으로 하고 있습니다. (문제가 된다면 비공개 처리하겠습니다😂😂)이미지 출처 : https://data-newbie.tistory.com/516지

velog.io

 

데브옵스 실무를 위한 개념과 툴 -2 (컨테이너)

컨테이너 컨테이너 - 소프트웨어 애플리케이션의 가상화를 지원하는 시스템 - 애플리케이션의 관점에서는 가상환경에서 작동하는 것과 같지만  OS의 관점에서는 컨테이너는 프로세스로 작동하

2mukee.tistory.com

 

 

도커 Docker 기초 확실히 다지기

이전 개발자를 위한 인프라 기초 총정리 포스트에서 컨테이너와 도커에 대해 간단히 살펴봤습니다. 이해하기 어려운 개념은 아니지만 막상 뭔가를 하려면 막막할 수 있는데요, 이번 포스트에서

futurecreator.github.io

 

 

 

300x250
728x90