Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
관리 메뉴

ㅇ.ㅇ

[Docker] Docker 기본 개념 본문

Docker

[Docker] Docker 기본 개념

yun_ 2025. 4. 8. 15:19
반응형

 

 

나는 회사 솔루션을 Docker 이미지로 만들어 배포하고 관리해 본 경험이 있지만, 그동안 너무 아는 것만 써왔다는 생각이 들었다. 특히 누군가에게 개념을 설명하려는 순간에 나 스스로도 명확하게 개념을 모르고 있다는 걸 깨달았고, 그래서 이번에 제대로 정리해 보고자 강의를 듣기 시작했다.

앞으로 정리해나갈 강의는 박재성님의 "비전공자도 이해할 수 있는 Docker 입문/실전"이다. 우선 첫 번째 정리는 Docker 기본 개념이다. 

 

 

Docker란?

Docker는 각각의 프로그램을 분리된 환경(컨테이너)에서 실행 및 관리할 수 있게 도와주는 툴이다.
쉽게 말해, 하나의 컴퓨터 안에서 여러 개의 '미니 컴퓨터 환경'을 만들어서, 그 안에서 각각 독립적으로 프로그램을 돌릴 수 있도록 해준다.

 

도커 컨테이너란?

하나의 컴퓨터에서 완전히 분리된 환경을 만들어주는 일종의 가상공간이다. 각 컨테이너마다 고유의 디스크(저장공간), 네트워크(IP, Port), 프로세스를 갖고 있다. 각 컨테이너끼리는 서로 영향을 주지 않는다. 

실제 컴퓨터와 컨테이너 사이의 관계는 아래처럼 생각할 수 있다.
- 호스트(host) : 내 컴퓨터
- 컨테이너(container) : 내 컴퓨터 안에서 격리되어 실행한 미니 컴퓨터

 

도커 이미지란?

테이너의 실행을 위한 '설치 패키지' 같은 개념이다. 이미지 안에는 프로그램을 실행하는 데 필요한 모든 정보(설치, 설정, 파일, 환경변수 등)가 포함되어 있다. 

이미지를 실행시키면 컨테이너가 되고, 하나의 이미지로 여러 개의 독립적인 컨테이너를 생성할 수 있다.
예) 
MySQL 이미지를 실행하면, MySQL이 깔려있는 컨테이너가 만들어진다. 내 컴퓨터에 직접적으로 MySQL을 설치 안 해도, 실행한 MySQL 컨테이너 안에서 사용할 수 있는 것이다.

 

 

Docker를 왜 써야 할까?

- 이식성 : 프로그램을 다른 환경에 똑같이 설치하고 실행하려면 같은 설정, 같은 버전, 같은 환경이 보장되어야 한다. Docker는 컨테이너라는 격리된 환경에 프로그램을 담기 때문에, 어디서 실행하든 동일하게 동작한다. 설정값, 설치 버전 충돌, 운영체제 차이로 인한 문제를 줄일 수 있다.

- 환경 간 일관성 보장 : 개발 환경, 테스트 환경, 운영 환경 모두 동일한 이미지로 배포되므로 환경에 따른 영향을 받지 않는다. 동일 환경을 보장하는 것. 

- 쉬운 설치 : 복잡한 설치 과정을 생략하므로 설치가 빠르고 쉽다. 도커 허브에서 pull 받기만 하면 끝! 배포 또한 단순하다. 이미지만 빌드해 두면 어디서든 실행할 수 있다. 

- 확장성과 유연성 : 컨테이너는 가볍고 빠르게 생성/삭제가 가능해서 서비스 확장/축소가 쉽다. 서로 다른 컨테이너 간에도 네트워크 연결, 볼륨 공유 등의 설정도 가능해서 유연하게 구성할 수 있다.

 


 

그동안 Docker를 실무에서 써오면서도, 개념을 제대로 정리할 기회가 없었다. 이 강의를 들으면서 내가 사용하던 것들에 대해 개념 자체를 명확하게 이해하게 되면 좋겠다. 이번엔 단순히 '사용'하는걸 넘어서, '이해하고 설명할 수 있는 수준'까지 올라가는 걸 목표로 하고 있다.

 

반응형