Docker Introduction
Introduction Docker
Introduction to Docker (2022/05/03)
왜 docker를 쓰는가?
Installer 다운 → Installer 실행 → 프로그램 설치 완료 하지만, Installer 실행 중 에러가 발생할 수 있다. (갖고 있는 서버, 패키지 버전, 운영체제 등등에 따라 프로그램 설치 과정 중에 많은 에러 발생)
Docker를 쓰게 된다면, Container 단위로 프로그램의 배포 및 관리가 간단하게 가능하다.
1) Docker란?
- Container를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구
- Container 기반의 오픈소스 가상화 플랫폼
2) Docker Image 란?
Container는 코드와 모든 종속성을 패키지화 하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행이 되도록 하는 단위이다.
Container Image는 코드, 런타임, 도구, 시스템 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 독립적 실행 소프트웨어 패키지이다
- 이때, Container Image는 런타임에 container가 되고, docker container의 경우라면 docker engine에서 실행될 때, image가 container가 된다.
- 리눅스와 윈도우 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너화된 소프트웨어는 인프라에 관계없이 동일하게 작동한다. (소프트웨어를 환경으로부터 격리시키고 개발과 스테이징의 차이에도 불구하고 균일 작동하도록 보장)
3) Docker Container 란?
- 다양한 프로그램, 실행환경 등을 추상화 하여 동일한 인터페이스 제공하여 프로그램 배포 및 관리를 간단히 해주는 것이 Container 이다.
- 기본적으로 컨테이너 내애는 다양한 물건이나 물품을 넣을 수 있다.
- 그리고, 컨테이너에 내용을 담아 운송 수단으로 쉽게 옮길 수 있다.
- 이처럼, 서버 내에서도 Container란 것을 이용하여 프로그램을 손쉽게 이동 배포 관리 해준다
4) Docker 사용시 흐름
- 도커 사용시에는 도커 CLI에 커맨드 입력
- 그러면 도커 서버(도커 Daemon)이 커맨드를 받아서 실행
설명 ($ docker run hello) docker : docker 클라이언트임을 명시 run : container 생성 hello-world : hello-world라는 이름을 가진 이미지
1) 도커 클라이언트에 커맨드 입력하여 서버로 요청 보냄 2) 서버에서 hello-world라는 이미지가 로컬에 cache 되어있는지 확인 3) 현재는 없기에 Unable to find image 문구 표시 4) Docker hub이라는 이미지가 저장되어 있는 곳에 가서 그 이미지를 가져오고 로컬에 Cache 보관 5) 그 후 이제는 이미지가 있으니 그 이미지를 이용하여 컨테이너 생성
* Docker 사용과 VM 사용시의 차이
- 기존의 가상화 환경에서는 Hypervisor라는 통합관리 체계를 이용해, 각각의 Guest OS를 설정하였다.
- 그렇기 때문에, 그 무게가 무거웠지만
반면, Docker Engine을 사용하게 되면 컨테이너 단위로 프로그램이 실행되어 Guest OS를 탑재하고 있는 VM보다는 덜 부담스러운 프로그램 체계 관리가 가능하다.
- 도커 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널 공유 (단, 한 호스트 위에서 올라가기 때문에 커널은 서로 공유하게 된다.)