[배포] 도커
노트북을 하나 구매하면, 학교 프레젠테이션을 준비하려고해도
크롬깔고 알집다운, 폰트다운, 포토샵, 프레젠테이션 등등 설치해야 할것이 많다.
서버를 돌리기위한 환경을 구축하는것은? 더 복잡하다.
언어,웹서버,데이터베이스 자동배포 등등 여러가지 버전신경쓰고 이것저것 설정해줘야된다.
서버를 관리하다보면
서버를 늘리고 여럿 추가해야되는 상황이 올텐데...
얘네도 아까 설치했던거랑 똑같은 환경을 만들어줘야
똑같이 돌아갈텐데..
If..예전 개발자가 메뉴얼도 잘 안해놓고 그러면 완전 멘붕일거다..
이런문제점을 도커가 해결해준다.
도커란?
각 요소들이 설치된 모습을 => 이미지로 저장해줌
아래사진처럼 각제품마다 공식적으로 제공해주는 이미지도 있고
원하는대로 만들수도있다.
이런 도커 이미지들은 도커허브 란곳에 업로드된다. (like github)
도커(Docker)는 바로 Docker Hub라는 소프트웨어 저장소와 함께 빠르게 성장했고, 그 결과 개발자들은 쉽게 애플리케이션을 포장하고, 컨테이너 방식으로 실행
이렇게 도커허브에서 업로드되어지고 공유및 다운도 가능
이렇게 조각조각 이미지로 저장된 항목들이 함께 연결되고 동작되도록 설정된 상태를
=> 명령어 텍스트 혹은 => 문서 저장가능
이것들을 설치하는 과정을 녹화해둔다는 느낌이다.
그래서!!
이 문서만 잘보관해두면?
언제 어디서든 서비스에 필요한 설정대로 도커허브에서 다운받아 설정가능
근데
도커는 이것들을 컴퓨터에 바로 설치 노노
각각의 요소들을 -> 컨테이너라고 불리는 가상의 공간을 만들어내서 복원한다.
그렇기 때문에 서로 다른 버젼도 한 컴퓨터에서 잘 돌아갈 수 있음
컨테이너의 장점? 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다!
- 가상 컴퓨팅은 한 물리적 컴퓨터안에 각각 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분할해서 쓰기 때문에 성능에 한계가 생김
- 도커는 OS단까지 내려가는 게 아니라 실행환경만 독립적으로 돌리기 때문에 가상 컴퓨팅보다 빠름 (실제 설치한 것과 거의 비슷)
서버오류가 생기면? 그냥 이 컨테이너 자체를 통째로 교환해버리면 된다
갓도커!!
컨테이너의 장점
- 의존성 충돌 문제를 해결해 준다.
- 개발과 배포 환경을 일치시킨다.
- 수평 확장을 쉽게 해준다.
- 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.
의존성 충돌 문제 해결
갓도커...
컨테이너의 장점? 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다!
컨테이너는 무엇을 독립적으로 가지냐?
- 프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스할 수 있다.
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.
- 네트워크
- 기본으로 컨테이너 하나에 하나의 IP 주소가 할당되어 있다.
- 파일 시스템
- 컨테이너 안에서 사용되는 파일 시스템은 구획화되어있다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다.
개발과 배포환경 일치
PostgreSQL설치시..
우분투?
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
맥북?
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
=> 이렇게 명령어도 다름
도커는 이러한 문제를 해결해 줍니다. 도커가 실행 중이라면, 어떠한 운영체제든 상관없이 다음 명령어로 즉시 PostgreSQL을 설치하고 실행
docker run --name postgres -e POSTGRES_PASSWORD=mysecret -d postgres
- OS에 상관없이 즉시 애플리케이션 실행 환경을 만들 수 있다.
- 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.
동일한 애플리케이션 구성(이미지)을 바탕으로 새로운 서버에 해당 애플리케이션을 컨테이너로 실행하고, 로드 밸런서에 이 서버를 추가하기만 하면 된다.
"오케스트레이션 도구"=>이러한 일을 해주는 도구. 이는 결국 컨테이너 기술 덕분에 가능한 것