도커(Docker)?

도커 공식 사이트

  • 도커는 애플리케이션 개발, 배포 및 실행을 위한 개방형 플랫폼
  • 도커 이전에 컨테이너(Container)에 대해 잠깐 알아보자…

컨테이너(Container)는 또 무엇인가?

  • 기존에는 아래와 같은 문제들이 있었음
    • 서버마다 환경이 달라서, 어딘 작동하고 어딘 작동이 안됨
    • 배포가 느림
    • 서버를 줄이고 늘리는 스케일링이 어려움
  • 그래서, 애플리케이션과 실행 환경 자체를 아예 묶자는 말이 나왔음
  • 그것이 바로 컨테이너!

도커와 컨테이너에 대한 공식 설명

그래서 도커는 어떻게 구성되어 있는가?

  • 크게 보면 알아야 할게 두 가지가 있음
    1. 도커는 기본적으로 클라이언트-서버 구조임
    2. 도커는 “이미지”라는 객체를 “컨테이너”라는 인스턴스로 만들어서 실행시킴

클라-서버 구조?

  • 도커는 도커 데몬과 도커 클라이언트로 구성됨
  • 도커 클라이언트들은 도커 데몬이랑 통신함
  • 도커 데몬은 컨테이너들을 빌드, 실행, 배포함
    • 또한 다른 데몬이랑 통신할 수도 있음

이미지? 컨테이너?

  • 이미지는 도커 컨테이너를 만들기 위한 읽기전용 실행 설계도임
  • 다른 사람이 만든 것도 쓸 수 있고, 직접 이미지를 만들 수도 있음
    • 이미지를 직접 빌드하려면 Dockerfile이라는 파일이 필요함.
    • Dockerfile을 통해 이미지를 다시 빌드할 때, 변경된 부분만 다시 빌드되기 때문에 빠름
  • 컨테이너는 이미지의 실행 가능한 인스턴스임
    • 컨테이너를 네트워크, 스토리지 등에 연결할 수 있음
    • 또한 컨테이너의 현재 상태를 기반으로 새로운 이미지를 만들어낼 수도 있음

그럼 이미지는 어디다 두나?

  • 레지스트리라고 있음
  • 레지스트리에 이미지를 둘 수 있음
  • 공개일 수도, 비공개일 수도 있음
  • 참고로 Docker Hub라고 해서 누구나 사용 가능한 공개 레지스트리가 있음 (그리고 기본 레지스트리임)
  • 그리고 레지스트리 안에 관련있는 이미지끼리 모아둔 리포지토리라는 개념도 있음

도커 컴포즈 (Docker Compose)?

  • 여러개의 컨테이너를 사용할 수 있도록 하는 툴
  • 다양한 컨테이너와 구성을 YAML 파일에 정의해서 한번에 키거나 끌 수 있게 함
  • 참고 : Compose 파일과 Dockerfile은 엄연히 다름!!
    • Compose : 실행할 컨테이너들을 정의함
    • Dockerfile : 이미지를 빌드하기 위한 지침을 정의함
    • Compose 파일이 Dockerfile을 참조하는 경우가 꽤 있음

다음에 할 것

  • Dockerfile 이해하기