4월 1주차 스터디 발표 자료📖
첫 출근때문에 상경했는데.. 이래저래 정신도 없고 글도 마음처럼 잘 안적혀서 속상하네요. 박박 슬픔 😂
이번주 스터디 주제는 Docker 입니다!!
Docker란?
- 컨테이너라고 불리는 하나의 작은 소프트웨어 유닛 안에 우리의 어플리케이션과 필요한 시스템 툴, 환경설정, 모든 Dependency를 하나로 묶어 다른 서버, PC 그 어떤 곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴이다.
- 즉, Docker란 애플리케이션을 패키징 할 수 있는 툴이다.
Docker가 왜 만들어졌을까?
- 기존의 개발은 PC 또는 서버마다 개발 환경을 하나하나 다시 설정해야하는 번거로움이 있었다.
- 이렇게 개발자의 PC, 서버마다 개발에 필요한 모든 환경을 구성하다보면 버전 충돌같은 여러 오류가 발생할 수 있다. 따라서 이러한 번거로움과 오류를 해결하기 위해 등장한 것이 Docker이다.
🤬아니.. 내 컴퓨터에선 된다고!!!
Docker를 사용하는 이유?
- 플랫폼 호환성
- Docker는 운영체제나 환경에 영향을 받지 않고 실행이 가능하다.
- 다양한 환경에서 애플리케이션을 실행할 수 있기때문에 개발 및 배포과정이 간편해진다.
- 개발 생산성
- 컨테이너를 통해 개발, 테스트, 배포 및 운영 환경을 일관성 있게 유지할 수 있다.
- 보안성
- 컨테이너는 Host 시스템과 분리된 파일 시스템, 네트워크, 프로세스 등의 환경에서 실행되기 때문에 애플리케이션 실행 환경이 분리되어 보안성이 강화된다.
- 여기서 말하는 Host 시스템은 VM 또는 Server를 의미한다.
Docker vs VM
- VM
- 각각의 가상머신마다 Guset OS가 호스트 운영체제 위에 있으므로 시스템이 무거워진다. ➔ 한 컴퓨터에서 여러개의 OS가 동작한다고 생각하면 된다.
- 서로 다른 운영체제 환경에서 실행해야하는 어플리케이션이나 서버가 있는 경우에는 VM이 적합하다.
- Docker
- Docker의 컨테이너는 호스트의 운영체제를 공유하기 때문에 가상머신에 비해 비교적 시스템이 가볍다. 즉, 시스템 처리 시간 및 리소스 절감을 할 수 있다.
- 단일 운영체제에서 여러 응용프로그램을 실행해야하는 경우 Docker의 컨테이너가 적합하다.
Docker의 내부구조
이미지 출처(docker 내부구조): https://docs.docker.com/get-started/overview/
- Docker client
- 사용자가 Docker 명령어를 입력하는 터미널 또는 웹 인터페이스 등 클라이언트 애플리케이션이다.
- Docker daemon
- Docker 클라이언트와 상호작용하여 컨테이너를 생성, 실행, 관리하는 역할을 한다.
- Images
- 도커의 이미지는 컨테이너를 생성하기 위한 실행 파일과 라이브러리 등의 모든 필요한 요소를 포함한 패키지이다.
- Docker Registry
- Docker 이미지를 저장하고 관리하는 서버이며 Docker 이미지를 공유하고 검색할 수 있는 중앙 저장소 역할을 한다.
- 누구나 사용할 수 있는 공용 레지스트리이며 도커는 기본적으로 Docker Hub에서 이미지를 찾도록 구성되어있다.
- Container
- Docker 이미지를 기반으로 생성된 실행 가능한 가상화된 환경이다.
- 컨테이너는 프로세스, 파일 시스템, 네트워크 등을 포함하며 호스트 시스템과 완전히 분리된 환경에서 실행된다.