
Docker
- 하나의 컴퓨터에서 여러개의 컴퓨터가 필요할 때 사용한다.
- 하나의 컴퓨터에서 여러 개의 가상환경을 만들어주는 기술이다.
- 여러 개의 가상환경을 만들기 위해서 Docker를 사용해야한다.
가상 컴퓨터에서 API서버 실행 => Docker
사용이유
- 백엔드 서버와 데이터 베이스 서버를 분리하기 위함
- 다른 컴퓨터환경에서 동일한 환경을 제공 받기 위함
- 프로그램을 미리 설치
- 다른 가상컴퓨터에 비해 가볍다. (커널을 공유하기 때문)
그렇다면 가상 머신은?
- 컴퓨터 안에 컴퓨터가 있으니까 속도가 매우 느리다.
- 운영체제에 필요한 모든 것을 설치해야하므로 용량을 많이 차지한다.
도커와 가상 머신의 차이
- 부팅 등 운영체제의 핵심 기능(커널)은 공유하는 가상머신
- 커널을 공유하기 때문에 속도가 다른 가상 머신보다 훨씬 빠르다.
- OS 전체를 새로 설치하지 않아도 된다.
- 도커는 리눅스 기반의 프로그램이기 때문에 맥과 리눅스에서는 호환성이 매우 좋지만 윈도우에서는 호환성이 좋지 못하다.
도커 명령어
- 모든 image와 컨테이너 삭제 →
docker system prune -a
- docker image 삭제 →
docker rmi [image id]
- docker 정지 →
docker stop [container id]
- docker 모두 정지 →
docker stop
docker ps -q``
- docker container 삭제 →
docker rm [container id]
- docker container 모두 삭제 →
docker rm
docker ps -a -q``
- RUN과 CMD의 차이
- RUN : 도커가 빌드될 때 실행 →
docker build
- CMD : 도커가 실행될 때 같이 실행 →
docker run
도커와의 통신
- Port-Forwarding이라는 기술을 사용해야한다.
Port-Forwarding
- 도커로 여러 개의 가상환경을 만들면 포트 번호 충돌이 발생할 수 있다.
- 포트 번호의 충돌을 방지하기 위해 도커 내부로 진입하는 포트를 하나 더 만들어 도커를 관리한다.
docker run -p 500:3001 [이미지 id]
Docker
- 하나의 컴퓨터에서 여러개의 컴퓨터가 필요할 때 사용한다.
- 하나의 컴퓨터에서 여러 개의 가상환경을 만들어주는 기술이다.
- 여러 개의 가상환경을 만들기 위해서 Docker를 사용해야한다.
프론트엔드/백엔드/데이터베이스 전체 구조
- 브라우저 : 관리자 페이지와 유저 페이지로 나뉜다. → 우리가 사용하는 페이지는 일부에 불과하다.
- 관리자 페이지 : 페이지를 관리하는 사람들이 접속하는 페이지, 관리자들에게 필요한 자료들을 볼 수 있는 페이지이다. 즉, 소비자에게는 필요하지 않는 정보를 보여주는 페이지라고 봐도 무방
- 백엔드(서버, 컴퓨터) : API를 관리, 프론트엔드의 요청을 기다린다.
- 프론트엔드와 달리 유저와 관리자 백엔드를 나누지 않는다.
- 프론트엔드(서버, 컴퓨터) : html, css, js를 관리, 브라우저의 응답을 기다린다.
- 프론트엔드는 두가지로 나뉜다.
- 유저를 위한 프론트엔드
- 관리자를 위한 프론트엔드
- 데이터베이스(서버, 컴퓨터) : 데이터 저장 및 관리, 백엔드의 요청을 기다리고 있다.
- 하나의 서비스를 제공하기 위해서는 우리가 생각하는 것보다 많은 자원이 필요하다.
백엔드와 데이터베이스의 구조
- 브라우저
- 백엔드
- 데이터베이스
- SQL : 테이블에 데이터를 저장한다. (관계형 데이터 베이스) → 주로 ORM (Object Relation Mapping)를 사용해서 개발
- NoSQL : 문서 형태의 데이터에 객체를 저장한다. → 주로 ODM(Object Document Mapping)를 사용해서 개발
- Collection(서류봉투)
- Document(문서)
- ORM/ODM : DB명령어 자동생성
가상컴퓨터에서 API서버 실행 → Docker
사용이유
- 백엔드 서버와 데이터 베이스 서버를 분리하기 위함
- 다른 컴퓨터환경에서 동일한 환경을 제공 받기 위함
- 프로그램을 미리 설치
- 다른 가상컴퓨터에 비해 가볍다. (커널을 공유하기 때문)
그렇다면 가상 머신은?
- 컴퓨터 안에 컴퓨터가 있으니까 속도가 매우 느리다.
- 운영체제에 필요한 모든 것을 설치해야하므로 용량을 많이 차지한다.
도커와 가상 머신의 차이
- 부팅 등 운영체제의 핵심 기능(커널)은 공유하는 가상머신
- 커널을 공유하기 때문에 속도가 다른 가상 머신보다 훨씬 빠르다.
- OS 전체를 새로 설치하지 않아도 된다.
- 도커는 리눅스 기반의 프로그램이기 때문에 맥과 리눅스에서는 호환성이 매우 좋지만 윈도우에서는 호환성이 좋지 못하다.
도커 명령어
- 모든 image와 컨테이너 삭제 →
docker system prune -a
- docker image 삭제 →
docker rmi [image id]
- docker 정지 →
docker stop [container id]
- docker 모두 정지 →
docker stop
docker ps -q``
- docker container 삭제 →
docker rm [container id]
- docker container 모두 삭제 →
docker rm
docker ps -a -q``
- RUN과 CMD의 차이
- RUN : 도커가 빌드될 때 실행 →
docker build
- CMD : 도커가 실행될 때 같이 실행 →
docker run
도커와의 통신
- Port-Forwarding이라는 기술을 사용해야한다.
Port-Forwarding
- 도커로 여러 개의 가상환경을 만들면 포트 번호 충돌이 발생할 수 있다.
- 포트 번호의 충돌을 방지하기 위해 도커 내부로 진입하는 포트를 하나 더 만들어 도커를 관리한다.
docker run -p 500:3001 [이미지 id]
두 개의 도커를 하나로 묶어보자! ⇒ Docker-Compose
- docker-compose build ⇒ 여러 개의 도커 한번에 빌드
- docker-compose up ⇒ 설치된 도커 실행
- docker-compose stop ⇒ 실행된 도커 종료
- docker-compose down ⇒ 설치된 도커 삭제
- docker-compose로 묶인 docker들은 네임 리조루션이라는 방식으로 port-forwarding을 할 수 있다.
