Docker

logY·2022년 7월 17일
0
post-thumbnail

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을 할 수 있다.

profile
백엔드 개발자

0개의 댓글