2020.코딩일지
[Docker]리눅스기반, 왜도커인가[BEB 6th] 본문
728x90
코드스테이츠 블록체인 부트캠프 6기
도커란?
메모리,CPU,GPU가 포함된 런타임 옵션
MacOS유저용Docker Desktop설치안내 [ https://docs.docker.com/desktop/install/mac-install/ ]
*Apple Chip(M1)/Intel Chip 버전 구분하여 설치해야함.
`docker --version` 버전확인
컨테이너 방식의 장점(도커장점)
- 의존성 충돌 문제 해결
컨테이너는 1컴안에서 어떤 자원을 독립적으로 격리하는가?
1) 프로세스
특정 컨테이너 안에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 가능하다.
특정 컨테이너 안에서 작동하는 프로세스는다른 컨테이너 프로세스에게 영향을 줄 수 없다
2) 네트워크 (리소스격리가능)
기본으로 컨테이너 하나에 하나의IP주소가 할당되어 있다.
3) 파일시스템
컨테이너 안에서 사용되는 파일시스템은 구획화 되어있다.
그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다
도커(리눅스 컨테이너기술)와는 좀 다른 접근방법이지만, 비슷한 수준의 격리성을 제공한다.
가상머신(Virtual Machine, VM) ex.VMware, VirtualBox, Parallels등
: 하나의 호스트(주인)컴 위에 여러 개의 독립적인 컴이 작동할 수 있게 하는 기술 - 개발과 배포환경을 일치(환경구성표준화)
어떤 운영체제OS 상관없이 다음 명령어로 PostgreSQL을 설치하고 실행가능!
단일 SW패키지: `docker run --name postgres -e POSTGRES_PASSWORD=mysecret -d postgres`
앱구성자체컨테이너화를 시킨 docker-compose up로 후다닥 (.yaml만세!)
배포 : Amazon Web Service의 EC2상에 도커를 설치 or 도커컨테이너를 EC2서버에서 실행하는 서비스 ECS이용. - 수평확장을 쉽게해줌(실행환경의 일치,표준화) & 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의 비교
도커 | 가상머신 | |
공통점 | (리눅스 컨테이너기술을 이용해) 프로세스, 네트워크, 파일 시스템을 격리할 수 있다! (각각다른컴느낌) | |
격리성 및 보안 |
운영체제를 공유하기때문에; 비교적 취약 | 비교적 더 견고한 격리성 공유하지않으므로 강한 독립성으로 보안성이 높다! |
성능 | (크기가작아서 리소스를 적게먹어서) 성능ㅇ이 더 좋다 (도커: Linux Container기술로 OS위에 다른 OS를 실행하는 것이 아니므로) |
...그래도 기술의 목적이 다르기때문에 비교하는것은 적절하지않다!!ㅋㅋㅋㅋ |
개발자와 사용자 커뮤니티중심 | 애플리케이션에 대한 환경 격리성을 중심 | |
자원 | (한컴에 여러컨테이너를 띄워도 무리가 거의없음) | 많은 컴퓨팅자원 소모 |
크기 | 메가바이트 단위 앱단위 이미지(특정작업을 수행하는 단일기능) |
기가바이트 단위 가상머신위에 자체 운영체제(OS)를 꼭 설치해야한다 |
하이퍼바이저: VMware, VirtualBox, Parallels등 | ||
운영체제 지원 |
host OS를 공유 | host OS위에 guest OS가 돌아감 |
이식성 | OS구분없이 컨테이너 이식 및 즉시 실행 가능 | 각각의 OS가 달라 이식이 어려움 + 크기가 커서 시간소요ㅠ |
:결론: | 한 컴에서 동일한 운영체제에 여러 앱을 구동하려면 도커컴포즈를 쓰세욥 |
다른운영체제에서 여러 앱을 구동해야하면 가상머신을 사용할것 |
하나의 앱을 여러플랫폼에서 개발테스트를 해야한다면 운영체제에 구애받지않고 자유롭게 할 수 있당! |
기본운영체제를 쪼개는것이 아닌, 운영체제 위에서 작동할 수 있게 도와주는것이 도커이다.
내컴운영체제 위에있지만, 기본환경과는 다른 독립적인 별도의 환경이 구성되는것이다.
리눅스 컨테이너
=리눅스 기반기술중의 하나로 운영체제 레벨의 가상의 메서드이다.
=라이브러리와 앱들을 모아 별도의 서버를 구성한 것이 컨테이너이다.
'WebServer&DB&CTI' 카테고리의 다른 글
[mac] postgresql Guide (0) | 2022.11.03 |
---|---|
[Docker]Node.js웹 앱의 도커라이징Dockerizing(컨테이너화) (0) | 2022.08.20 |
[인증/보안]OAuth2.0[BEB 6th] (1) | 2022.08.15 |
[데이터베이스]NoSQL:MongoDB = NoSQL도큐먼트DB[BEB 6th] (0) | 2022.08.11 |
[DB]SQL Advanced-[BEB 6th] (0) | 2022.08.09 |
Comments