0과 1을 공부하다.

[Docker] Docker 맛보기 - 특징과 설치 (1) 본문

Study/Server

[Docker] Docker 맛보기 - 특징과 설치 (1)

Developer_Jay 2022. 8. 11. 15:41
728x90

 

 

[Docker] Docker 맛보기 - 특징과 설치 (1)

간단 설명 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 1. 용어 container 격리된 공간에서 프로세스가 동작

blog.greatpark.co.kr

 

 

[Docker] Docker 맛보기 - 컨테이너 실행/중단 (2)

Docker image pull 시스템 이미지 목록 $ docker image ls Official Image $ docker pull [image_name] # ex. rockylinux 8 pull $ docker pull rockylinux:8 User Image $ docker pull [user_name]/[repository_name]:[tagname] 이미지 삭제 $ docker rmi 이

blog.greatpark.co.kr

 

 

[Docker] Docker 맛보기 - Dockerfile/Docker-Compose (3)

Dockerfile을 이용한 이미지 빌드 도커파일을 생성할 디렉터리 생성 및 이동 $ mkdir img_build && cd img_build Dockerfile 생성 및 작성 $ vi Dockerfile Dockerfile option FROM 베이스 이미지 RUN 새로운 레이어에서 명령

blog.greatpark.co.kr

 

등장 배경

 

 

서버 관리는 매우 복잡하다.

1. 많은 요구조건
2. 계속해서 바뀌는 서버환경
3. 계속해서 바뀌는 개발 환경

 

 

 

도커 등장 이전의 서버관리를 위한 노력들

첫 번째. 문서 작성

  • 서버 관리를 위한 문서를 작성함.
  • 하지만 다른 OS에서 설치해야하는 문제나 문서 업데이트가 주기적으로 이뤄지지 않을 경우 일관성 있는 서버관리가 이뤄지지 못함.

두 번째. 상태 관리 도구 이용

  • 상태관리 도구(셰프(Chef), 퍼펫(Puppet), 엔서블(Ansible) 등)
  • 전통적인 쉘 스크립트와 다르게 yaml 구문으로 비교적 이해하기 쉽고 가독성이 높으며, 절차적인 스크립트와 다르게 선언적인 방식을 사용함. 특정 OS에 종속적이지 않고 다양한 환경에서 이용이 가능함.
  • 쉘 스크립트 명령어가 아닌 하나의 설정 파일로 작성하는 방법
  • 하지만 해당 코드 작성하는 것이 어려워서 러닝 커브가 발생함(러닝커브: 신기술을 학습하는 데에 소요되는 시간을 나타내는 곡선)

세 번째. 가상머신 이용

  • VMBox와 같은 가상 머신을 이용하여 관리함.
  • 하지만 VMBox 초기 설정을 하기 위한 문제가 발생하고 서버 이미지 공유가 용이하지 않는 문제가 발생.
  • 속도 저하 문제가 있음.

네 번째. 자원 격리

  • 프로세스, 파일, 디렉토리를 가상으로 분리하는 기법.
  • CPU, MEMORY, I/O 그룹별로 제한
  • 리눅스 기능을 이용한 빠르고 효율적인 관리 가능 (가상 머신이 아님)
  • 단, 사용하기 위한 기술이 너무 어려움.

 

도커는 위와 같은 노력을 해소하기 위한 컨테이너 기반의 가상화 도커가 등장하게 되었으며, 도커의 등장으로 플랫폼 및 프레임워크 의존성 문제를 해결할 수 있으며, 가상머신처럼 독립적으로 실행되지만 가상머신보다 빠르고 가상머신보다 쉽고 효율적으로 사용할 수 있게 되었다.

 

 

 

간단 설명

 

  • 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

 

1. 용어

 

  • container: 격리된 공간에서 프로세스가 동작하는 기술.
  • image: 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것. 상태값을 가지지 않고 변하지 않음.(Immutable)
  • Dockerfile : Dockerfile은 DockerImage를 생성하기 위한 스크립트(설정파일). 순차적으로 실행되며, 여러 이미지를 마운트하여 작성할 수 있음. 
  • Docker Hub : Docker에서 운영하는 Docker 이미지 저장소 서비스.
  • Docker Compose : 복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 툴.
  • Docker Swarm : 도커 컨테이너를 위한 클러스터링, 스케줄링 툴. 여러 개의 서버와 컨테이너 관리를 쉽게 가능.

 

2. 특징

  • 확장성, 이식성이 좋음 → 도커만 설치되어 있으면 어디든지 컨테이너 실행 가능. 특정 회사나 서비스에 종속적이지 않음. 쉽게 개발서버를 만들 수 있음.
  • 표준성 → 도커를 사용하지 않을 경우 배포 방식이 제각각 다름. 컨테이너라는 표준으로 머든 서비스 배포 과정이 동일해짐.
  • 이미지 → 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정 필요. Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능. 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러옴.
  • 설정관리 → 설정은 보통 환경변수로 제어함. 하나의 이미지가 환경변수에 따라 동적으로 설정 파일을 생성하도록 만들어져야함.
  • 자원관리 → 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화됨. 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3와 같은 별도 저장소 필요. 세션이나 캐시를 memcached나 redis와 같은 외부로 분리

 

 

3. 컨테이너(container)의 특징

  • 격리된 환경에서 작동하는 프로세스이다.
  • 리눅스 커널의 여러 기술을 활용한다.
  • 하드웨어 가상화 기술보다 가볍다.
  • 이미지 단위로 프로세스 실행 환경을 구성한다.

 

4. Docker 가 가져온 변화

  • 클라우드 이미지보다 관리하기 쉬움
  • 다른 프로세스와 격리되어 가성머신처럼 사용하지만 성능저하가 거의 없음.
  • 복잡한 기술을 몰라도 됨.
  • 이미지 빌드 기록이 남음.
  • Dockerfile을 통해 코드와 설정으로 관리함으로 재현 및 수정이 가능하다.
  • 오픈소스라서 특정 회사 기술에 종속적이지 않음.

 

 

 

Docker Install (Linux Rocky8 기준)

 

  • Rocky Linux에 Docker Repo 추가
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

 

  • dnf 업데이트 실행
$ sudo dnf update

 

  • Docker CE 설치
$ sudo dnf install docker-ce docker-ce-cli containerd.io

 

  • 버전 확인
$ docker version

 

  • Docker 서비스 활성화 및 시작 상태 확인
$ systemctl enable docker
$ systemctl start docker
$ systemctl status docker



 

참고 사이트

 

 

 

 

 

※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.

 

 

* CopyRight 2022. Jay Park All rights reserved.

728x90
Comments