Docker 란?
Docker 는 애플리케이션을 빠르고 쉽게 구축 및 배포를 하기위한 소프트웨어 플랫폼입니다.
도커에서는 '컨테이너' 라는 표준화됫 유닛으로 패키징 합니다. 컨테이너 안에는 소프트웨어를 실행하기 위해 필요한 모든것을 가지고 있습니다.
그리고 이렇게 패키징된 '컨테이너' 를 독릭접으로 실행할수 있도록 도와주는 것이 바로 도커 입니다.
컨테이너
우리가 해외에서 물건을 배를 통해 운송하기 위해 반드시 필요한것은 위처럼 컨테이너가 필요합니다. 그리고 이 컨테이너는 각각의 물건이 격리된 상태이며 절대 섞이거나 하지 않습니다.
이처럼 Docker 의 컨테이너 또한 각각 격리된 상태에서 프로세스가 동작하는 방식으로 각각의 컨테이너는 별도의 환경과 세팅 등을 가지고 있습니다.
- 프로세스
- 특정 컨테이너에서 작동하는 프로세스는 기본적으로 컨테이너 안에서만 액세스 할수있다
- 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄수없다
- 네트워크
- 기본적으로 컨테이너 하나의 IP 주소가 할당되어 있다
- 파일시스템
- 컨테이너 안에서 사용되는 시스템 파일은 구획화 되어 있다. 그래서 해당컨테이너에서의 명령이나 파일등의 엑세스를 제한할수 있다
Virtual Machine 과 차이
사실 도커를 공부하면 빠질수 없는것이 바로 VM 이하 버츄얼 머신이다 이유는 버츄얼 머신을 본따 만든것이 바로 도커이기 때문이며 또 한 도커와 상당히 유사한 구조를 가지고 있기 때문이다.
하지만 개발을 할때 대부분 Docker 환경에서 개발을 진행하지 특별한 상황이 아닌이상 VM 환경에서 개발을 하고자 하지 않을것이다. 가장큰 이유는 다음과 같다
무겁다.
VM 환경의 이미지를 보면 Docker의 이미지 보다 계층이 많다는것을 알수있다.
그리고 가장 크게 눈에 보이는 점은 바로 Guest Operaing System 이다.각각 서로 다른 OS 를 가지고 구동을 한다는 점 이다. 이러한 OS 때문에 VM 환경이 무거운것이다.
또한 이 각 Guest Operaing System (이하 Guest OS) 를 구동하기 위해서는 본컴퓨터의 자원을 할당받아 사용되기 때문에 결국 하드 의 용량을 잡아먹게된다.
생각해보아라 이미 본인의 컴퓨터에는 macOS 든 Window 든 어떠한 환경이 깔려있을것이다.
그리고 그 위에 VM 프로그램이 깔리고 또 그리고 그 안에 새롭게 만든 또 다른 VM 의 OS 가 깔릴것이다. 벌써부터 무거운게 느껴진다.
하지만 Docker 는 Host Operating System 위에 Docker 엔진이 구동되고 그 위에 각각의 컨테이너가 구동되는 원리이다. 즉 각각의 컨테이너는 하나의 OS 와 하나의 엔진 을 공유 하고 있다.
왜 사용하는가?
좋다 그렇다면 우리는 굳이 도커 라는 소프트웨어를 사용하면서 까지 개발을 해야되는 이유는 무엇인가?
그 이유는 바로 개발환경의 일치시키기 위함입니다.
개발을 하기위해서는 세팅이 반이다라는 말이 존재합니다.즉 개발 환경을 맞추는데 굉장한 시간과 노력이 필요하며 중간에 세팅을 잘못만지게라도 될경우 잘 작동하던 프로그램이 어느순간 동작이 안하는 불상사를 겪게됩니다.
또한 사람 A 는 window , 사람 B 는 MacOS 를 사용하게 될경우 사람A 에서 잘 작동해도 사람B 컴퓨터는 작동을 하지않을수도 있습니다. 왜냐하면 서로 OS 가 달라 통신하는 언어가 다르기때문입니다.
흔히들 "제 컴퓨터 에서는 잘 작동되는데요" 라는 말이 절로 나온다.
그리고 이러한 점을 해결하기 위해 우리는 개발 환경을 통합하기 위한 방법으로 Docker 를 활용하여 개발을 진행한다.
마치며
사실 Docker 를 알긴했지만 마땅히 전회사에서 쓸일도 없었고 필요성을 느껴본적이 없었다. 하지만 최근 다른 분들 과 공부를 진행하고 회사를 이직하게 되면서 Docker 의 필요성을 뼈저리게 느끼는 중입니다. 제가 이해한 것을 바탕으로 작성한 글이기 때문에 틀린부분 또한 존재할수 있다는점 감안 바랍니다.
'환경' 카테고리의 다른 글
Dockerfile 작성 방법 (0) | 2023.07.31 |
---|---|
Windows OS 에 Docker 설치 방법 (0) | 2023.07.15 |
Docker 명령어 정리 (0) | 2023.01.29 |
코딩을 위한 폰트 D2coding 설치 하기 (0) | 2022.10.02 |
chocolatey 를 활용하여 윈도우 에 손쉽게 설치하자 (0) | 2022.09.29 |