Docker

cch_chan·2022년 3월 18일
0

DevOps

목록 보기
2/19

Docker란

소프트웨어 배포,개발에 도움을 주기 위해 생겨난 애플리케이션을 컨테이너화 시키는 소프트웨어라 할 수 있습니다.


Docker를 사용하는 이유
1.의존성 충돌 문제 해결
어떤 애플리케이션은 실행 하기 위한 환경 구축이 필요한 경우가 있는데 컴퓨터마다 환경이 다르기 때문에 2개의 이상의 프로그램을 사용할 때 의존성이 충돌하여 제대로 된 실행이 못하게 될 수 있는데 그것을 방지하기 위함

2.개발과 배포 환경을 일치시킴
여러 개발자가 하나의 애플리케이션을 만들기 위해, 보통 비슷한 개발 환경을 구축하는것이 기본이지만 개발중에 발생하는 사소한 실수나 사전 설치 항목의 부재는 문제 해결에 많은 시간을 소모하게 합니다. 그러한 시간 낭비를 없애줌

흔히 이전에 개발자들의 밈(meme) 중 하나였던, "제 컴퓨터에서는 작동되는데요?" 라는 말은 컨테이너 환경에서는 더 이상 유효하지 않게해줌 ㅋㅋ;

3.수평 확장, 서버업데이트를 쉽게해줌
서비스를 운영할때 트래픽이 높은 사이트의 경우 많은 서버가 필요한데 여러대의 서버들의 실행환경을 일치시켜 서버 개수를 늘릴때 큰 도움이됨

기술을 응용하여, 새로운 버전의 애플리케이션을 여러 서버 중 몇 대에만 운영하여 테스트하는 방법도 가능

docker 주요 키워드

  • 컨테이너
    애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자

  • 이미지
    실행되는 모든 컨테이너는 이미지로부터 생성. 이미지는 애플리케이션, 애플리케이션 구성을 함께 담아놓은 템플릿 이를 이용해 컨테이너를 즉시 만들 수 있음.
    이미지는 기본 이미지로부터 변경 사항을 추가/커밋해 다른 이미지를 만들 수 있음

  • 레지스트리
    이미지가 보관 되는곳. 대표적으로 Docker Hub, Amazon ECR이 존재함
    도커 CLI에서 이미지를 이용해 컨테이너를 생성할 때, 호스트 컴퓨터에 이미지가 없다면 기본 레지스트리로부터 다운이됨.

컨테이너와 vm(가상머신)의 차이

두 가지 기술 모두 프로세스, 네트워크, 파일시스템을 격리할 수 있다는 장점이 공유되지만 vm의 경우 컴퓨터의 자원을 많이 필요로 하지만 도커는 여러개의 컨테이너를 띄워도 크게 무리가 되지 않음 또 vm의 경우 운영체제를 반드시 설치해야함

컨테이너 격리성

격리성비고
cpu 성능공유
메모리공유
네트워크격리각각 컨테이너마다 IP가 따로 있다.
리눅스 커널공유hypersivor가 리눅스 커널의
가상화를 지원합니다(docker)
파일격리각 컨테이너마다
논리적인 디스크가 따로 있다.
프로세스격리
profile
꾸준히 새로운 기술을 배워나가는중입니다.

0개의 댓글