오늘은 도커를 공부해보려고한다. 평소에 웹 개발할때 자주 사용하던 플랫폼인데 개념을 정확하게 한번 더 짚고가면 이후에 쿠버네티스 공부할때 좋을거같아 도커를 한번 더 정리 하려고 한다 !
하지만 ! (나에게)도커는 어렵다. 그래서 나는 도커를 “요리”에 빗대어서 설명해보려한다 !
Docker는 개발자가 컨테이너를 구축, 배포, 실행, 업데이트 및 관리할 수 있게 해주는 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션 소스 코드를 운영 체제(OS) 라이브러리 및 모든 환경에서 해당 코드를 실행하는 데 필요한 종속성과 결합하는 표준화된 실행 가능한 구성 요소입니다.
도커는 애플리케이션을 독립된 환경에서 실행할 수 있도록 해주는 도구다. 마치 요리를 위해 모든 재료를 하나의 상자에 넣어두는 것과 비슷하다. 이 상자에는 필요한 모든 재료가 담겨있어, 어디서든 상자만 열면 똑같은 요리를 만들 수 있다. 도커를 통해 개발자는 애플리케이션을 만들고, 이를 다양한 환경에서 일관되게 실행할 수 있다.
컨테이너화(Containerization)는 앞서 말한 상자에 재료를 담는 과정과 같다. 이 상자 안에는 애플리케이션이 실행되기 위해 필요한 모든 것이 포함된다. 예를 들어, 피자를 만들기 위해서는 도우, 소스, 치즈, 토핑 등이 필요하다. 만약 이 재료들을 각각 준비해야 한다면, 장소가 바뀔 때마다 다시 준비해야 할 것이다. 하지만 상자에 모든 재료를 담아두면, 어디서든 상자만 열면 쉽게 피자를 만들 수 있다는 것이다 !
이 상자는 다른 상자와 완전히 독립적으로 존재하며, 하나의 상자에 문제가 생겨도 다른 상자에는 영향을 주지 않는다. 또한, 이 상자는 매우 가벼워서 빠르게 이동할 수 있고, 다른 환경에서도 똑같이 작동한다. 이처럼 컨테이너화는 애플리케이션을 일관되고 효율적으로 관리할 수 있도록 해준다.
도커는 몇 가지 중요한 구성 요소로 이루어져 있다. 이를 통해 컨테이너를 관리하고 운영할 수 있다.

1. Dockerfile에서 도커 이미지를 빌드합니다.
2. 이 Docker Image는 여러 환경에서 동일하게 사용될 수 있는 애플리케이션의 "완성된 템플릿"입니다.
3. 이 이미지를 실행하면 Docker Container가 생성되며, 애플리케이션이 실제로 동작하게 됩니다.
이 과정은 위에서 언급했듯이, 레시피(Dockerfile)를 보고 요리(Docker Image)를 만들고, 그 요리를 실제로 서빙하는 것(Docker Container)과 비슷하다 !
도커는 다양한 상황에서 활용될 수 있다. 개발 환경에서는 개발자들이 동일한 환경에서 작업할 수 있도록 하여, "내 컴퓨터에서는 잘 되는데 서버에서는 안 된다"는 문제를 방지한다. 또한, CI/CD 파이프라인에서 도커는 애플리케이션의 빌드, 테스트, 배포를 자동화하는 데 사용된다.
마이크로서비스 아키텍처에서도 도커는 각 서비스를 독립적으로 컨테이너로 패키징하여 관리할 수 있다. 이 외에도 테스트 환경을 신속하게 구성하거나, 클라우드 환경에서 애플리케이션을 배포하는 데도 도커가 유용하게 사용된다.
결론적으로, 도커는 개발자가 애플리케이션을 만들고, 이를 다양한 환경에서 일관되게 실행할 수 있도록 도와주는 강력한 도구다. 이를 통해 개발자는 더 효율적으로 작업할 수 있고, 사용자에게는 일관된 경험을 제공할 수 있다.
잘 읽었습니다. 화이팅!