Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
[Docker] Docker 개념
Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 가상 머신처럼 독립된 실행 환경을 만들어줌
컨테이너
- 호스트에서 실행되는 각각의 격리된 실행환경
- 각각의 컨테이너에는 앱을 실행하는 데 필요한 라이브러리와 실행 파일들만 포함
- 이러한 기술을
컨테이너 기술이라고 함 - 어떤 환경에서든 똑같은 실행 환경을 구축할 수 있도록 함
이미지
- 컨테이너 실행에 필요한 파일과 설정값을 포함하고 있는 것
- 각 요소들의 설치된 형태
- 도커 hub에서 pull 받아 사용
특징
- 각 요소들이 설치된 형태를
이미지란 형태로 박제해서 저장 - 이미지로 저장된 항목들이 함께 연결되서 동작하도록 설정된 상태를 명령어 텍스트 또는 문서로 저장 가능
- 문서만 있으면 지정된 요소들이 언제든 미리 지정된 서비스에 필요한 설정대로 도커허브로부터 다운받아짐
- 다운받아진 이미지를
컨테이너라는 독립된 가상 공간을 만들어내서 복원
가상 환경과 도커의 차이
-
가상컴퓨팅은 한 물리적 컴퓨터 안에 각각 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분할해서 사용
→ 성능에 한계 有 -
도커는 실행 환경만 독립적으로 돌려 컴퓨터에 직접 요소들을 설치한 것과 별 차이없는 성능을 냄
→ 가상 컴퓨팅보다 빠르게 각각의 요소를 설치하여 실행하고 연동할 수 있음
도커 실행 과정
- docker hub에서 이미지 pull (
docker pull [options] name) - 이미지를 실행(run)하면 이미지가 컨테이너가 됨 (
docker run [options] IMAGE) - 컨테이너가 실행되며 안에 포함되어 있는 프로그램이 실행
도커 이미지 만들기
이미지 만드는 방식
- 사용하고 있는 컨테이너를 대상으로 커밋이라는 명령어를 실행
- 커밋 명령어에 의해 컨테이너가 이미지가 된다.
- 이미 사용하고 있는 컨테이너가 있는 경우에 사용(백업 느낌)
- 도커 파일 작성
- 도커 파일을 통해 만들고 싶은 이미지를 구체적으로 시간의 순서를 따라 기록하는 것
- 이미지 생성의 느낌