목차
도커를 쓰는 이유
가장 큰 이유는 프로그램 설치 과정을 간단하게 만들기 위함이다.
일반적으로 프로그램을 설치하려면 아래 과정을 거친다.
installer 다운받기 → installer 실행 → 프로그램 설치 완료
그러나 위 과정에서 서버, 패키지 버전, 운영체제 등에 따라 많은 에러가 발생한다.
도커를 사용하면 프로그램 설치 과정을 단순하게 만들 수 있다.
도커란?
도커를 공부하기 전 컨테이너가 무엇인지 아는 것이 먼저이다.
일반적으로 컨테이너를 떠올려보면 아래와 같은 이미지일 것이다.
컨테이너는 옷, 과일, 자동차 등을 담아 여러 운송 수단으로 쉽게 옮길 수 있게 한다.
서버에서의 컨테이너도 같다.
다양한 프로그램, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해 프로그램의 배포 및 관리를 단순하게 해준다.
일반적인 컨테이너가 여러 운송 수단으로 옮길 수 있다는 것과 마찬가지로 프로그램을 쉽게 이동, 배포, 관리하게 해주는데 AWS, Azure, Goole cloud 등 어디에서든 실행이 가능하도록 한다.
도커 이미지와 도커 컨테이너의 정의
- 컨테이너
코드와 모든 종속성을 패키지화해 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.
쉽게 말해 간단하고 편리하게 프로그램을 실행시켜주며 소프트웨어를 환경으로부터 격리, 개발과 스테이징의 차이에도 균일하게 작동하도록 보장한다는 것이다.
- 컨테이너 이미지
코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지이다.
- 이미지와 컨테이너의 관계
컨테이너 이미지는 런타임에 컨테이너가 된다. 도커 엔진에서 실행될 때 도커 이미지가 도커 컨테이너가 되는 것이다.
즉, 도커 컨테이너는 도커 이미지의 인스턴스이며, 프로그램을 실행한다.
도커 이미지를 이용해 컨테이너 생성 → 컨테이너 이용해 프로그램 실행
리눅스, 윈도우 기반 애플리케이션 모두에서 사용할 수 있는 컨테이너화된 소프트웨어는 인프라에 관계없이 항상 동일하게 실행된다.
도커 사용 흐름
도커 클라이언트(CLI)에 커맨드를 입력하면 도커 서버(도커 Daemon)이 해당 커맨드를 받아 모든 작업을 수행한다.
먼저 터미널에 아래 커맨드를 입력한다.
docker run hello-world
도커를 처음 실행한다면 로컬에 hello-world라는 이미지가 없기 때문에 아래와 같이 해당 이미지를 찾을 수 없다는 문구가 표시되며, 도커 서버가 해당 이미지를 pulling하는 것을 확인할 수 있다. pull이 완료되면 해당 이미지로 컨테이너를 생성한다.
흐름을 정리해보자면 아래와 같다.
- 도커 클라이언트에 커맨드를 입력하면 클라이언트가 도커 서버로 요청을 보낸다.
- 서버에서 커맨드에 입력된 이미지가 이미 로컬에 캐싱되어 있는지 확인한다.
- 로컬에 해당 이미지가 없으면 Dockerhub(이미지 저장소)에서 이미지를 가져오고 로컬에 캐시로 보관한다.
- 해당 이미지로 컨테이너를 생성한다.
이미지로 컨테이너가 생성되는 방법 - 이미지가 포함하는 것
이미지의 인스턴스인 컨테이너가 어떻게 생성되는지에 대해 알아야 한다.
다시 한번 상기해야 할 것은 이미지는 응용 프로그램을 실행하는데 필요한 모든 것을 포함하고 있다는 점이다.
그렇다면 그'필요한 모든 것'은 무엇인지 알아야 한다.
- 컨테이너가 시작될 때 실행되는 명령어 : 컨테이너가 시작될 때, 실행될 명령어를 미리 가지고 있다.
- 파일 스냅샷(디렉토리, 파일 복사본) : 응용 프로그램을 실행하는데 필요한 파일의 스냅샷
이미지로 컨테이너가 생성되는 방법 - 이미지로 컨테이너를 만드는 순서
- Docker 클라이언트에서 아래 명령어를 입력한다.
docker run <이미지>
- 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드디스크에 옮긴다.
- 이미지에서 가지고 있는 명령어(컨테이너 실행에 사용될 명령어)를 이용해 프로그램을 실행시킨다.
1에서의 명령어 입력 후 순서를 그림과 함께 보겠다.
- 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드디스크에 옮긴다.
- 이미지에서 가지고 있는 명령어(컨테이너 실행에 사용될 명령어)를 이용해 프로그램을 실행시킨다.
아래 강의를 듣고 작성한 글입니다.
따라하며 배우는 도커와 CI환경 - 인프런 | 강의
이 강의를 통해 도커에 대해서 배울 수 있으며, CI 환경을 구성할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'Docker' 카테고리의 다른 글
| Docker | 가상화 기술과 도커 컨테이너 (2) | 2023.05.08 |
|---|