Docker (0) - Docker는 어떤 기술인가
도커 첫인상
도커를 들어보기는 했지만 어떤 역할을 하는지 잘 모르고 있었다. 
그림은 귀엽게 생겨서 호감이 갔다. 고래가 컨테이너 박스 같은 것들을 나르고 있는 것처럼 보인다. 누가 도커 사용한다고 하면 뭔가 개발을 잘하는 사람처럼 보였다.
도커가 뭔지 한마디로 설명하고 싶었고 얼마나 좋은 기술인지 나도 느끼고 싶었다.
도커가 생긴 이유부터 남한테 설명하라고 하면 “내 컴퓨터에서는 되는데, 다른 곳에서는 안돼” 는 상황을 해결하기 위해 생겼다고 할 것 같다.
ai의 도움을 받아 어려운 말로 하자면 도커는 애플리케이션과 그 모든 종속성(라이브러리, 설정 파일 등)을 “컨테이너”라는 격리된 환경에 패키징하여, 어떤 환경에서든 동일하게 실행될 수 있도록 돕는 오픈소스 플랫폼이다.
내가 이해한 느낌은 어떤 환경에서든 작동할 수 있도록 컨테이너로 포장해주는 도구인 느낌이다.
도커의 핵심 개념
1. 이미지
애플리케이션을 실행하는데 필요한 모든 것을 담고 있는 읽기 전용 템플릿. (운영체제 설치 CD)
2. 컨테이너
이미지의 실행 가능한 인스턴스. 이미지를 기반으로 격리된 환경에서 애플리케이션이 실행되는 독립적인 공간
3. 도커파일(Dockerfile)
이미지를 빌드하기 위한 명령어를 담고 있는 텍스트 파일이다. 이 파일을 통해 이미지를 만들고 버전 관리를 한다.
도커가 중요한 이유
1. 가볍고 빠르다.
가상 머신(VM)처럼 OS 전체를 가상화하는 것이 아니라, 호스트 OS의 커널을 공유하여 훨씬 적은 자원으로 빠르게 컨테이너를 시작하고 실행할 수 있다.
2. 일관된 환경
개발, 테스트, 운영 환경을 컨테이너 이미지로 표준화하여 어디서든 동일하게 작동하도록 보장한다.
## 3. 쉬운 배포 및 확장 이미지를 한 번 만들어두면, 어떤 서버든 도커만 설치되어 있다면 몇 초 만에 애플리케이션을 배포하고 확장할 수 있다.
## 4. 뛰어난 이식성 로컬에서 만든 이미지를 클라우드(AWS, Azure, GCP), 온프레미스 서버 등 어디든 쉽게 옮겨 실행할 수 있다.
# 마무리 처음에 ci/cd 에 대해서 알아보다가 내가 로컬에서 운영하던 애플리케이션을 서버에서 돌린다고 했을 때 도커가 안전하고 부담없게 돌아가게 해주는 도구인 것을 알았을 때 도커가 진짜 좋은 도구라고 느꼈다.
내가 잘 만들어놓은 애플리케이션을 어느 환경에서든 작동될 수 있도록 저장하는 느낌이라 마음이 편안해지는 것 같다.
원래 진짜 좋은 도구를 느끼려면 역체감을 해봐야 제대로 느끼는데 도커가 없었던 시절에 개발을 접하고 ci/cd환경을 만드려고 했으면 훨씬 어렵고 부담도 많이 되었을 것 같다.
이제서야 도커가 어떤 역할을 하는지 조금이나마 알게 된 것 같다.