[Docker] Docker를 쓰는이유, docker-compose 설정하기

Jae Eon·2021년 8월 21일
0

백엔드 공부

목록 보기
8/17
post-thumbnail

도커를 이용해 데이터베이스(mysql + redis) 실행 환경을 쉽게 설정 하는 법을 알게되었고
세부적인 내용을 정리하기 위해 작성한 포스트

🍎 Docker란?

Docker는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 소프트웨어 플랫폼이다.
(컨테이너를 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장 할 수 있는 플랫폼)


🍋 Container?

컨테이너는 여러개의 어플리케이션을 단일 호스트에서 구동하기 위한 개념이다.
컨테이너는 Cgroupnamespace 와 같은 커널 기반의 기술을 이용해서 프로세스를 완벽하게 격리하여 분리된 환경을 만들고 실행하도록 해줌


🍈 VM vs Container

각각의 VM과 Container는 서로 다른 환경을 구성해 준다.
이들의 차이점을 알아보자
VM

  • 하드웨어 가상화(소프트웨어로 구성된 하드웨어)

Container

  • 하드웨어 가상화가 아님(Os 에서 지원하는 기능 활용)
  • 격리된 환경에서 실행되는 프로세스
  • Container는 Kernel통신이 가능해서 메모리(속도)관리에 이점이 있다.

이미지출처: SKplanet Tacademy

🍒 Docker를 쓰는이유

동일한 서버를 구성하고 서버 운영 로그를 남기기 위해 사용
도커는 도커 파일을 통해 실행 시점과 관계없이 동일한 구성의 서버를 운영할 수 있게 해준다
(도커 파일이 서버 운영 기록이라면, 도커 이미지는 운영 기록을 실행할 시점)
도커파일을 통해 서버 코드화가 가능하고 이는 아래와 같은 장점을 가진다.

  • 서버 제작 과정에 견고함과 유연성을 더해줌
  • 다른 이가 만든 서버를 소프트웨어 사용하듯 가져다 쓸 수 있음
  • 여러 대에 배포할 수 있는 확장성

도커를 쓰는 이유 자세한 정리(Link)

🍓 docker-compose.yml 파일 만들고 설정하기

docker-compose란?

  • 동시에 여러개의 컨테이너 응용 프로그램 배포 , 필요에 따라 사용자 지정 Docker 이미지를 사용 할수도 있다.
  • 기본적으로 배포하려는 각각의 컨테이너와 컨테이너에 대한 특정 특성을 정의 한다.
  • docker-compse 명령어 + 사용법 (Link)
# docker-compose.yml (mysql + redis 2개의 컨테이너)

version: "3.7" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
  db: # 서비스 명
    # platform: linux/x86_64 #왼쪽 라인은 M1 맥북사용시 추가할 것
    image: mysql:5.7 # 사용할 이미지
    restart: always
    environment: # -e 옵션
      MYSQL_DATABASE: 'DB이름넣기'
      MYSQL_USER: 'user명 넣기' #ex)'user'
      MYSQL_PASSWORD: 'password넣기'
      MYSQL_ROOT_PASSWORD: 'rootPassword넣기'  # MYSQL 패스워드 설정 옵션
      TZ: Asia/Seoul
    command: #명령어 실행
      - --lower_case_table_names=1 #mysql 대소문자 구별
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    container_name: mysql-test # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)  <- 컨테이너 내부는 무조건 3306
    volumes:
      - /Users/Shared/data/mysql-test:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)
      
  redis:
    image: redis:latest
    ports:
      - '6379:6379'
profile
🖋정리를 안하면 잊어버린다.👣한 발자국씩 가보자!

0개의 댓글