It's going to be one day 🍀

안녕하세요! 매일 매일 공부하려고 노력하는 백엔드 개발자 지망생의 공부 흔적입니다.

Back-End/Docker

[Docker] 가상화

2jin2 2024. 4. 15. 16:44

가상화란?

하나의 컴퓨터를 마치 여러 개인 것처럼 쪼개서 사용하는 것

ex) 하나의 운영체제에 Docker를 이용하여 2개의 앱을 실행시킨 것을 표현. 각각의 앱은 컨테이너라는 가상 공간에서 서로의 영역을 침범하지 않고 독립적으로 실행중임.

 

개발자가 Docker를 사용하는 이유는?

- 내가 만든 가상환경을 공유할 수 있음.

본인이 개발자이고 docker container에서 A라는 앱을 개발하는 중이었을 때 내가 만든 A 앱을 누군가에게 공유하려면?

-> 컨테이너는 '이미지'라는 것으로 저장할 수 있는데 쉽게 설명하자면 사진을 찍는 것과 비슷한 개념임. 지금까지 내가 개발한 결과물을 사진찍듯이 이미지로 저장해두면 누군가가 사용할 수 있음.

컨테이너를 이미지로 만든다. -> 이미지를 Docker hub라는 클라우드에 업로드한다. -> 이미지를 다운 받아 사용한다.

 

이렇게 docker를 사용하면 환경(ex. 운영체제)에 구애받지 않고 실행이 가능하다.

 

- 함께 일하는 팀원들의 개발 환경을 쉽게 동기화할 수 있음.

 

- 서버에 배포할 때 편함.


Docker container

이미지는 컨테이너를 생성하는데 사용되며, 이미지는 도커 허브와 같은 이미지 저장소에서 가져올 수 있음.

이미지를 이용해서 여러 개의 컨테이너를 만들 수 있고, 이미지에는 컨테이너를 구성하기위한 설정들이 모두 기록되어 있음.

 

Docker는 컨테이너 단위로 깔끔하게 분리된다는 장점이 있지만 컨테이너를 삭제할 경우 내부의 데이터도 깔끔하게 삭제된다는 단점도 있음. 이를 보완하기 위해 '볼륨' 이라는 기능을 제공함.

 

볼륨 

컨테이너의 디렉토리와 운영체제의 디렉토리를 연결하는 방식.


Docker image

이미지를 만드는 방법은 크게 두 가지가 있음.

1) 내 컴퓨터에서 실행 중인 컨테이너를 이미지로 만든다.

 

2) 누군가 만들어 놓은 이미지를 이용해 새로운 이미지를 만든다.