2020.코딩일지

[Docker]리눅스기반, 왜도커인가[BEB 6th] 본문

WebServer&DB&CTI

[Docker]리눅스기반, 왜도커인가[BEB 6th]

개발하는라푼젤 2022. 8. 19. 23:29
728x90
코드스테이츠 블록체인 부트캠프 6기 

 

도커란?

메모리,CPU,GPU가 포함된 런타임 옵션

MacOS유저용Docker Desktop설치안내 [ https://docs.docker.com/desktop/install/mac-install/ ]

 *Apple Chip(M1)/Intel Chip 버전 구분하여 설치해야함.

`docker --version` 버전확인

 

컨테이너 방식의 장점(도커장점)

  1. 의존성 충돌 문제 해결
    컨테이너는 1컴안에서 어떤 자원을 독립적으로 격리하는가?
    1) 프로세스
      특정 컨테이너 안에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 가능하다.
      특정 컨테이너 안에서 작동하는 프로세스는 다른 컨테이너 프로세스에게 영향을 줄 수 없다
    2) 네트워크 (리소스격리가능)
      기본으로 컨테이너 하나에 하나의IP주소가 할당되어 있다.
    3) 파일시스템
      컨테이너 안에서 사용되는 파일시스템은 구획화 되어있다.
      그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다
    도커(리눅스 컨테이너기술)와는 좀 다른 접근방법이지만, 비슷한 수준의 격리성을 제공한다.
    가상머신(Virtual Machine, VM) ex.VMware, VirtualBox, Parallels등
     : 하나의 호스트(주인)컴 위에 여러 개의 독립적인 컴이 작동할 수 있게 하는 기술
  2. 개발과 배포환경을 일치(환경구성표준화)
    어떤 운영체제OS 상관없이 다음 명령어로 PostgreSQL을 설치하고 실행가능!
    단일 SW패키지: `docker run --name postgres -e POSTGRES_PASSWORD=mysecret -d postgres`
    앱구성자체컨테이너화를 시킨 docker-compose up로 후다닥 (.yaml만세!)
    배포 : Amazon Web Service의 EC2상에 도커를 설치 or 도커컨테이너를 EC2서버에서 실행하는 서비스  ECS이용.
  3. 수평확장을 쉽게해줌(실행환경의 일치,표준화) & 4. 각 서버에 새로운 내용을 배포하기 쉽게 만들어줌
    "동일한 서비스가 여러 컴퓨터에서 작동한다" = 도커가 하는일
    동일한 앱구성(이미지)을 바탕으로 새로운 서버에 해당 앱을 컨테이너로 실행하고, 로드밸러서에 이 서버를 추가하기만 하면됨! (심지어 AWS는 서버를 만들고 삭제하는 일을 자동으로 해드립니다:-)

컨테이너기술덕분에 가능한 오케스트레이션도구(쿠버네티스)

 

 

레지스트리
Registry
이미지를 관리하고 공유하는 공간. DockerHub, Amazon ECR
~컨테이너 생성할때, 컴에 이미지가없다?하면 여기서 다운받아 실행됨~
docker image pull
레포지토리
Repository
레지스트리 내 이미지가 저장되는 공간  
이미지
images:tag
앱과 앱구성을 담은 템플릿
이미지를 이용해 여러 개의 컨테이너를 생성할 수 있다! 수평확장가능! 
따로 추가하고 변경하여 테스트가능(Node.js웹 앱의 도커라이징Dockerizing)
=컨테이너화
-> 도커라이징 실습 포스팅
docker image ls
docker images
컨테이너container (로컬컴과 다른)독립된 환경을 가진 앱상자 docker container run
docker container stop
docker container rm


컨테이너와 VM의 비교

각 앱마다 IP,Potr설정가능

  도커 가상머신
공통점 (리눅스 컨테이너기술을 이용해) 프로세스, 네트워크, 파일 시스템을 격리할 수 있다! (각각다른컴느낌)
격리성 및
보안
운영체제를 공유하기때문에; 비교적 취약 비교적 더 견고한 격리성
공유하지않으므로 강한 독립성으로 보안성이 높다!
성능 (크기가작아서 리소스를 적게먹어서) 성능ㅇ이 더 좋다
(도커: Linux Container기술로
OS위에 다른 OS를 실행하는 것이 아니므로)
...그래도 기술의 목적이 다르기때문에 비교하는것은
적절하지않다!!ㅋㅋㅋㅋ
  개발자와 사용자 커뮤니티중심 애플리케이션에 대한 환경 격리성을 중심
자원 (한컴에 여러컨테이너를 띄워도 무리가 거의없음) 많은 컴퓨팅자원 소모
크기 메가바이트 단위
앱단위 이미지(특정작업을 수행하는 단일기능)
기가바이트 단위
가상머신위에 자체 운영체제(OS)를 꼭 설치해야한다
    하이퍼바이저: VMware, VirtualBox, Parallels등
운영체제
지원
host OS를 공유 host OS위에
guest OS가 돌아감
이식성 OS구분없이 컨테이너 이식 및 즉시 실행 가능 각각의 OS가 달라 이식이 어려움 + 크기가 커서 시간소요ㅠ
:결론: 한 컴에서 동일한 운영체제에 여러 앱을 구동하려면 
도커컴포즈를 쓰세욥
다른운영체제에서 여러 앱을 구동해야하면
가상머신을 사용할것
  하나의 앱을 여러플랫폼에서 개발테스트를 해야한다면
운영체제에 구애받지않고 자유롭게 할 수 있당!
 

기본운영체제를 쪼개는것이 아닌, 운영체제 위에서 작동할 수 있게 도와주는것이 도커이다.

내컴운영체제 위에있지만, 기본환경과는 다른 독립적인 별도의 환경이 구성되는것이다.

 

리눅스 컨테이너

=리눅스 기반기술중의 하나로 운영체제 레벨의 가상의 메서드이다.

=라이브러리와 앱들을 모아 별도의 서버를 구성한 것이 컨테이너이다.

 

Comments