DevTools/Docker

docker 기본 정의

solytory 2025. 4. 15. 18:00

♣ Docker가 무엇일까? 왜 쓸까?

- Go언어로 만들어졌고 애플리케이션을 실행 환경을 패키징하고 배포고 실행할 수 있게 해주는 컨테이너 기반의 가상 플랫폼이다.

- 도커를 현업에서 많이 사용하는 이유는 다양한 이유가 있을 수 있지만 제일 큰 장점은 이식성이라고 한다 

예를 들면? 

A 컴퓨터에서 MySQL을 설치하는데 아무런 이슈가 없이 잘 설치가 됐다

A 컴퓨터에서 설치한 방법과 동일하게 B 컴퓨터에서 MySQL을 설치하는데 자꾸 에러가 발생해서 깔아다가 지우 고를 반복했지만 결국 실패했다.. 이유는? 너무 다양한 이유가 있음 MySQL버전 문제, 컴퓨터에 설치된 프로그램의 충돌, 운영체제 다름 등등등.. 

이런 과정들을 해결할 수 있는 툴이 Docker이다 Docker는 각기 컨테이너별로 독립적으로 분할이 되기 때문에 컴퓨터에 어떤 다른 프로그램이 설치되어 있는 거랑 충돌이 난다거나 OS가 달라서 충돌이 난다거나 그런 에러가 없이 명령한 줄로 쉽게 설치가 되기 때문에 복잡한 설치과정이 없고, 항상 같은 조건(버전, 환경, 설정, 옵션 등등)으로 설치가 되고 각 프로그램이 독립적인 환경에서 실행이 되기 때문에 충돌이 없다는 장점이 있다.

 

 

♣ 컨테이너란? 

-컨테이너는 한 개의 컴퓨터(내가 사용하고 있는 컴퓨터) 환경에서 독립적인 컴퓨터 환경을 구성해서 구성된 환경에서 프로그램을 별도로 설치할 수 있게 만든 개념이라고 생각하면 된다. 

예를 들면? 컴퓨터를 사용할 때 계정별로 컴퓨터를 나눠서 쓸 수 있다는 걸 컴퓨터를 사용해 봤다면 1개의 컴퓨터에 여러 개의 계정을 만들 수 있다는 걸 알고 있을 것이다 계정을 나눠서 사용하게 되면 각 계정별로 새로운 환경에서 각기 메모리를 할당받아서 사용이 되는데 나도 아직까지는 총메모리에서 어떤 식으로 할당되고 이런 자세한 구조는 잘 모르겠다..😭

하지만? 어쨌든 A 사용자가 카카오톡을 설치했지만 B사용자로 들어가서 카카오톡을 사용하려면 다시 설치해야 한다는 건 알 수 있으니 컨테이너 개념을 이해하기에 어렵진 않을 것으로 생각된다. 

각 컨테이너는 독립성이 보장된다. 디스크(저장공간), 네트워크(IP, Port) 등이 각자 개별로 정보를 가지고 있다고 생각하면 된다!

만약 3개의 컨테이너를 Docker를 사용해서 띄웠다면?

  IP Port 메모리
A 컨테이너 192.168.0.101 81 10
B 컨테이너 10.0.0.55 82 10
C 컨테이너 172.16.1.200 83 10

 

♣ 이미지란?

- 만약에 어떤 사람이 "안녕"이라고 콘솔에 출력해 주는 프로그램을 간단하게 만들었다고 가정해 보자

그럼 이거랑 똑같은 프로그램을 설치하고 싶은데 나에게는 "안녕"이라고 출력해 주는 프로그램을 어떤 식으로 만들어졌는지에 대한 자료가 아무것도 몰라서 동일한 프로그램을 실행할 수 없게 됐다 하지만 여기서 Docker에 이미지를 사용하면 손쉽게 같은 프로그램을 실행할 수 있게 된다 

왜? 이미지는 프로그램을 실행하는데 필요한 설치 과정, 버전 정보 등등의 프로그램을 실행하는데 필요한 모든 것! 을 포함 하고 있기 때문이다

즉, 어떤 사람이 여러 가지의 초기 세팅, 코드 작성등을 했지만? 나에게 image만 있다면? docker를 사용해서 같은 프로그램을 손쉽게 사용할 수 있게 되는 것이다. 

 

 

 

 

Docker를 사용하게 되면 컨테이너, 이미지는 정말 수 없이 얘기하고 접하게 될 단어(?)라서

꼭!!!!! 컨테이너와 이미지에 대한 정의를 알고 넘어가는 게 중요하다