도커(Docker)?
도커 공식 사이트
- 도커는 애플리케이션 개발, 배포 및 실행을 위한 개방형 플랫폼
- 도커 이전에 컨테이너(Container)에 대해 잠깐 알아보자…
컨테이너(Container)는 또 무엇인가?
- 기존에는 아래와 같은 문제들이 있었음
- 서버마다 환경이 달라서, 어딘 작동하고 어딘 작동이 안됨
- 배포가 느림
- 서버를 줄이고 늘리는 스케일링이 어려움
- 그래서, 애플리케이션과 실행 환경 자체를 아예 묶자는 말이 나왔음
- 그것이 바로 컨테이너!
도커와 컨테이너에 대한 공식 설명
그래서 도커는 어떻게 구성되어 있는가?
- 크게 보면 알아야 할게 두 가지가 있음
- 도커는 기본적으로 클라이언트-서버 구조임
- 도커는 “이미지”라는 객체를 “컨테이너”라는 인스턴스로 만들어서 실행시킴
클라-서버 구조?
- 도커는 도커 데몬과 도커 클라이언트로 구성됨
- 도커 클라이언트들은 도커 데몬이랑 통신함
- 도커 데몬은 컨테이너들을 빌드, 실행, 배포함
이미지? 컨테이너?
- 이미지는 도커 컨테이너를 만들기 위한 읽기전용 실행 설계도임
- 다른 사람이 만든 것도 쓸 수 있고, 직접 이미지를 만들 수도 있음
- 이미지를 직접 빌드하려면 Dockerfile이라는 파일이 필요함.
- Dockerfile을 통해 이미지를 다시 빌드할 때, 변경된 부분만 다시 빌드되기 때문에 빠름
- 컨테이너는 이미지의 실행 가능한 인스턴스임
- 컨테이너를 네트워크, 스토리지 등에 연결할 수 있음
- 또한 컨테이너의 현재 상태를 기반으로 새로운 이미지를 만들어낼 수도 있음
그럼 이미지는 어디다 두나?
- 레지스트리라고 있음
- 레지스트리에 이미지를 둘 수 있음
- 공개일 수도, 비공개일 수도 있음
- 참고로 Docker Hub라고 해서 누구나 사용 가능한 공개 레지스트리가 있음 (그리고 기본 레지스트리임)
- 그리고 레지스트리 안에 관련있는 이미지끼리 모아둔 리포지토리라는 개념도 있음
도커 컴포즈 (Docker Compose)?
- 여러개의 컨테이너를 사용할 수 있도록 하는 툴
- 다양한 컨테이너와 구성을 YAML 파일에 정의해서 한번에 키거나 끌 수 있게 함
- 참고 : Compose 파일과 Dockerfile은 엄연히 다름!!
- Compose : 실행할 컨테이너들을 정의함
- Dockerfile : 이미지를 빌드하기 위한 지침을 정의함
- Compose 파일이 Dockerfile을 참조하는 경우가 꽤 있음
다음에 할 것