본문 바로가기
Docker

[Docker] 도커의 동작원리

by 개복취 2023. 8. 31.

이전 글

https://mola2.tistory.com/10

 

[Docker] 도커에 대해 알아보자!

Docker? 도커의 주 목적은 서버환경을 격리하기 위해 사용한다. 이를 독립된 환경에서 격리하는 기능을 통해 프로그램 간 의존성 이슈 또는 버전 이슈가 생기지 않도록 도와준다. 의존성 이슈 : 서

mola2.tistory.com


도커의 컨테이너의 구조

(출처=그림과 실습으로 배우는 도커&쿠버네티스)

도커의 구조는 상단에서부터 도커 컨테이너, 리눅스 운영체제, 서버 컴퓨터 의 구조로 이루어진다.

컨테이너는 항상 도커엔진위에 올라가 있는 상태이며, 도커엔진은 리눅스 운영체제 위에 올라가있는 형태이다.

 

도커 컨테이너 Linux 커널과 주변부분의 분리

(출처=그림과 실습으로 배우는 도커&쿠버네티스)

컨테이너 안에는 '리눅스의 주변부분'이 들어있다. 엄밀히 비어있는 컨테이너는 사실 비어있지 않는 상태라고 볼 수 있다.

도커엔진 밑에 있는 리눅스는 '커널'이 들어있다. 주변부분으로부터 명령을 전달받고 커널에 전달받는 구조로 되어있다.

 

컨테이너 내부에 커널이 존재하는것이 비효율적이기 때문에 오른쪽과 같은 구조로 존재하게 된다. 

 

도커 허브와 이미지

이미지는 컨테이너를 만드는데 사용된다. 심지어 역으로 컨테이너로 이미지를 만들수 있다!

도커허브(공식 이미지) - 도커허브(공식 아님) - 내가만드는 커스텀 이미지

도커 컨테이너의 가장 강력한 장점으로, 만들어둔 이미지를 통해 같은 컨테이너를 생성할 수 있다.

이러한 도커 이미지를 바닥부터 만들 필요 없이 '도커 허브'에서 공개된 이미지를 가지고와서 컨테이너를 만들 수 있다.

 

컨테이너는 다향한 형태로 조합이 가능하다. 도커를 사용할 때 '한 컨테이너에 한 프로그램' 원칙이 존재한다. 이는 보안 및 유지 관리 측면에서 유리하기에 많이 쓰이는 정책이다.

 

(출처=그림과 실습으로 배우는 도커&쿠버네티스)

가령, 워드프레스를 구축할 때 (웹서버 - NGINX / Apache , DBMS - MySQL / PostgreSQL, 워드프레스) 다양한 구성이 가능하다.

이를 별도의 컨테이너로 구성할 수 있지만, 한 컨테이너에 모두 넣을 수도 있다.

 

도커 컨테이너의 생애주기 / 도커에서의 데이터 저장

만들고 -> 실행하고 -> 종료하고 -> 폐기한다

도커 컨테이너는 '쓰고 버리는' 일회용품에 가깝다. 오래된 컨테이너를 계속 사용하기 보다는 업데이트된 소프트웨어를 사용한다.

 

컨테이너를 폐기하더라도 데이터를 저장하기 위해 '도커가 설치된 물리적 서버의 디스크를 마운트' 한다.

외부에다 볼륨을 지정하면, 다른 컨테이너와도 데이터를 공유할 수 있다.

나중에 이야기하겠지만 볼륨을 마운트하는 방법에는 컨테이너 외부에 저장하는 방법과 내부에 저장하는 방법으로 구분된다. 

 

 

 

'Docker' 카테고리의 다른 글

왜 도커이미지를 Linux Alpine으로 쓸까?  (0) 2023.08.30
[Docker] 도커에 대해 알아보자!  (2) 2023.08.30