mjeongriver
article thumbnail
Published 2023. 3. 31. 14:16
day96-docker TIL/Docker

1. CI/CD (Continuous Integration/Continuous Delivery)

- CI

서버에 빌드/테스트의 자동화 과정입니다.

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration) 을 의미합니다.

- CD

배포 자동화 과정입니다. CD는 지속적인 서비스 제공(Continuous Delivery)  또는 지속적인 배포(Continuous Deployment) 를 의미합니다.

- CI/CD의 종류

  • Jenkins
  • CircleCI
  • TravisCI
  • Github Actions

등이 있습니다. 자바 어플리케이션은 Jenkins를 가장 많이 사용합니다. CI / CD환경을 구축해주기 위해 필요한 개념으로 핫한 기술이 하나 있죠. 컨테이너 기반의 형상관리, 배포 도구인 도커입니다.

 

2. Docker란

- docker이전 운영환경의 가상화기술

기존의 가상화 기술인 가상머신(Virtual Machine) 은 하이퍼바이저(Hypervisor)를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식이었습니다.

- 하이퍼바이저

하드웨어에서 시스템의 운영 체제와 리소스를 분리해 VM에 할당하여 가상 머신을 생성하고 구동하는 소프트웨어입니다.

대표적으로 VMware가 있습니다.

 

- 기존 가상화 기술의 장점

독립적인 OS를 실행시킬 수 있음

 

- 기존 가상화 기술의 단점

(VM)가상머신이 하드웨어의 성능도 많이 사용하게 되고, 용량 자체가 커서 가상머신 만들고 배포하는 작업은 부담스럽습니다.

 

- 도커란?

도커(Docker) 는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리 기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트 입니다.

  • 컨테이너 박스를 만들고 어플리케이션 구동에 필요한 OS, 라이브러리, 실행 파일 등등을 하나의 이미지로 묶어서 컨테이너에 배포하는 방식입니다.
  • 이런 이미지로 만들었을 때 용량 또한 대폭 줄게 됩니다.
  • 컨테이너는 각각 프로세스들의 서로 영향을 미치지 않고 독립적인 환경을 갖게 합니다**. (가상화 기술과 비슷)**
  • 가상 머신은 하이퍼바이저와 OS를 부팅하는데 자원을 크게 사용하는데 반해, 도커는 호스트OS 위에서 가동되기 때문에 보다 가볍습니다.

 

https://wooody92.github.io/docker/Docker-%EB%8F%84%EC%BB%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/

 

Docker - 도커란 무엇인가

도커, 도커를 사용하는 이유, 도커의 특징 이해

wooody92.github.io

 

3. docker 설치

윈도우에 설치 vs 우분투에 설치

  • 윈도우에 설치하기

 

  • reboot후에 WSL커널 업데이트가 필요 (필요시 창이 나옴)
    • 링크로 들어가서 순서대로 실행 (1,2,3,4,5 단계 까지)
  • docker를 재실행

 

  • 설치 확인하기
  • powershelll을 열어준다.
  • docker version명령문을 실행.

 

  • 우분투에 설치하기

https://docs.docker.com/engine/install/ubuntu/

 

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

  • apt이용해서 패키지 다운

 

  • 도커 엔진 설치

 

4. docker 동작 방식

레이어 < 이미지 < 컨테이너

https://seosh817.tistory.com/345

 

[Docker] 도커란? - 도커 개념 정리

이 포스트는 시작하세요 도커! 책을 참고하였습니다. 도커란? 도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수

seosh817.tistory.com

- 컨테이너란?

컨테이너 하나는 애플리케이션 입니다 (권장 방식) 컨테이너는 이미지로 구성됩니다.

 

예시

  • 데이터베이스 1개, 스프링백엔드 app 1개, react프론트 app1개 라면 3개의 앱 입니다. (컨테이너는 3개가 됩니다)
  • 기존 어플리케이션 배포가 하나의 운영체제에 설치 했었습니다. (모놀리식 아키텍쳐)
  • 컨테이너는 완벽히 isolate(독립)된 형태로 관리되고 운영 됩니다.
  • CPU, 메모리, 디스크공간, 네트워크 등등이 완전히 독립된다. (서로 영향을 미치지 않는다)

- 이미지란?

컨테이너를 생성할 때 필요한 요소입니다.

이미지는 레이어로 구성됩니다.

예시

  • 스프링 동작되기 위해서 필요한 소스 코드들이 있습니다. (스프링프로젝트 이미지1)
  • 스프링은 톰캣에서 동작합니다 (톰캣 이미지2)

- 레이어란?

레이어는 하나의 이미지를 구성하는 파일들입니다

이미지는 여러 개의 파일로 만들어집니다 (이 파일들을 각각의 레이어라고 보면 됩니다)

 

- 도커의 동작방식

https://seosh817.tistory.com/345

 

[Docker] 도커란? - 도커 개념 정리

이 포스트는 시작하세요 도커! 책을 참고하였습니다. 도커란? 도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수

seosh817.tistory.com

 

Docker Client -> 도커를 설치하면 그것이 Client며 build, pull, run 등의 도커 명령어를 수행합니다.

DOCKER HOST -> 도커가 띄워져 있는 서버를 의미합니다. DOCKER_HOST에서 컨테이너와 이미지를 관리하게 됩니다.

Docker daemon -> 도커 엔진입니다.

Registry -> 외부(remote) 이미지 저장소입니다. 다른 사람들이 공유한 이미지를 내부(local) 도커 호스트에 pull할 수 있습니다. 이렇게 가져온 이미지를 run하면 컨테이너가 됩니다.

  • public 저장소: Docker Hub (깃 허브와 비슷)
  • private 저장소: AWS ECR 혹은 Docker Registry를 직접 띄워서 비공개로 사용하는 방법 등이 존재합니다.

도커는 기본적으로 리눅스 위에서만 돌아간다.

그럼 윈도우에서는 어떻게 실행되는가? - 가상머신을 이용해서 경량화 된 리눅스(도커호스트)를 설치한다.

리눅스 서버에서는 리눅스 자체가 도커호스트가 된다.

  • 도커 호스트 위에서 도커엔진이 동작한다.
  • 도커 호스트는 (리눅스에 도커데몬를 설치하고 running중인 상태) 이다.
  • 도커 명령문(CLI) 를 내리면 도커데몬이 동작하게 된다.
  • 도커데몬 위에서 각각의 컨테이너들은 동작된다. (HOST와 커널은 공유된다)

 

정리 하자면

선장 - docker client

컨테이너선 - docker host

갑판과 엔진 - docker demon

컨테이너 - docker container

컨테이너 안에 박스 - docoker image

'TIL > Docker' 카테고리의 다른 글

day96-docker hub 저장소(feat.registry)  (0) 2023.03.31
day96-docker volume  (0) 2023.03.31
day96-docker 네트워크  (0) 2023.03.31
day96-dockerfile  (0) 2023.03.31
day96-docker  (0) 2023.03.31
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그