Docker 개념 잡기

최현진·2022년 12월 26일
0

ㅇMpeon

목록 보기
4/9

개념

Container라는 가상적 공간에 어플리케이션,시스템툴,리소스파일,환경설정,환경변수 PATH등을 보관하여
추후 다른 서버나 pc에서도 자유롭게 풀링하여 가져다 사용할수있고, 그로인해 사용자끼리 다르게 설정된 개발환경하에서도 도커로 표준화한 Container를 이용하여 모든 환경에서도 같은 아웃풋으로 개발을 진행할수있게 도와주는 협업툴

VM과 Docker의 차이

VM은 하나의 운영체제 위에서 가상머신을 이용하여 어플리케이션을 구동하는데 그런 가상머신은 필수적으로 별도로 고립되어 하나이상의 OS를 포함하는 가상공간을 구축하여야 하기때문에 무겁고 느려질수밖에 없는 상황에서 Docker의 Container개념은 VM을 경량화한 개념으로 무거운 OS를 포함하지않고 Container와 Image들만으로 구성된 엔진을 바탕으로 독립된 가상의 공간을 실행할수있게 만들어주기때문에 기존의 가상공간을 별도로 사용하던 VM Ware나 VirtualBox와는 다르게 리소스를 많이 잡아먹지 않고 쾌적하게 가상공간을 활용할수 있음

결론
vm웨어에서 보다 가볍고 쾌적한 환경을 추구하며 가상환경을 위하여 무거운 os를 필요로하지않는, Container를 기반으로 한 가상공간에서의 리소스 보관과 자유로운 편집을 목적으로 한 도구

Docker의 구성요소

Dockerfile,Image,Container

1.Dockerfile

컨테이너의 레시피
필수 파일
프레임워크
라이브러리
환경변수 설정
구동스크립트 등을 포함

2.Image

어플리케이션을 실행하기 위해 필요한 모든것
코드
런타임환경
시스템 툴
시스템 라이브러리
환경 설정 및 Dockerfile 등을 포함
OOP의 클래스와 비슷한 개념
더이상 수정할 것이 없는 최종본

3.Container

이미지를 이용해서 실제 어플리케이션의 구동을 담당
각각의 컨테이너에서 수정된 항목들이 이미지에는 영향을 주지않음
OOP의 인스턴스와 비슷한개념
Dockerfile, Image를 포함한 수정가능한 버전

Docker의 Image 배포과정

로컬에서 만든 Image를 Conatiner 레지스트리에 푸시하면
다른 개발자나 서버에서 Container 레지스트리에서 풀링하여 똑같은 이미지를 서버나 다른개발자가 함께 이용하며 깃허브와 같은 형식으로 운용 가능

Docker의 보안

수많은 사람들이 함께 오픈소스를 공유하며 쉽게 통일된 작업환경을 구축할수있다는 장점이 있지만, 그에따라 수많은 사람이 Container레지스트리의 Image에 접속할수 있고, 이에따라 금전적인 손실이 발생하여도 오픈소스 기반의 패키징 서비스이기 때문에 피해에 대해 책임 질수없으므로 기업들은 주로 Public한 서비스인 도커나 github보단 Private한 서비스인 aws,google cloud, Azure같은 서비스등을 이용하여 패키징을 하고 Contanier에서 푸시와 풀링을 진행한다

총정리

Docker는 결국
1.로컬머신에서 Dockerfile을 작성하고
2.그것을 이용하여 빌드한 Image파일을 Container 레지스트리에 푸시하여 등록하고
3.그것을 다른 개발자나 서버컴퓨터가 풀링하여 받을수있는 Image파일들을 실행할수있게되는
여러 협업도구중 하나인것이다.

2022.12.26 1610i

참고자료

https://www.youtube.com/watchv=LXJhA3VWXFA&list=PLrxn1RBZKHAJNvbpfwn7jSK1fw_7Nn__L
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

추가

Docker와 Git의 차이점

profile
Lorem ipsum dolor sit amet

0개의 댓글