-> 앱을 실행하는데 필요한 모든것을 하나로 묶어서, 어떤 환경에서도 동일하게 실행할 수 있도록 해주는 기술
-> 예를 들면 내 PC에선 잘되는데 왜 다른 컴퓨터에선 안되지 같은 문제해결 도구.
-> Docker는 앱을 택배상자인 Container 안에 넣는것과 같음. 앱 실행에 필요한 모든 자료가 Container 안에 담겨있어 상자를 보내기만하면 어디서든 사용이 가능하다는게 핵심.
Docker를 사용할 때 기본적으로 알아야 하는 개념은 크게 세 가지
🖼️ 이미지 (Image) - 앱과 실행 환경이 담긴 택배 상자의 설계도, 컨테이너를 만들기 위한 불변(Immutable)의 패키지. <OS환경, 애플리케이션 실행 파일, 라이브러리, 설정 파일>
📦 컨테이너 (Container) - 그 이미지가 실제로 실행된 상태 (택배 상자를 열어 앱이 동작 중인 상태) <자체 파일 시스템, 네트워크, 프로세스>
🚧 Dockerfile - 이미지를 만들기 위한 조립 설명서(레시피) <기반 이미지, 파일 복사>
앱 실행순서: Dockerfile → 이미지 → 컨테이너
Docker를 사용하는 주된 이유는 다음과 같습니다.
"내 컴퓨터에선 잘 되는데 다른 컴퓨터에선 안 돼요!" 문제 해결
환경이 달라도 Docker가 그 환경을 똑같이 만들어줍니다.
쉽고 빠른 배포
만든 앱을 쉽게 배포하고, 업데이트하는 것도 간단합니다.
앱을 격리하여 안정성 확보
앱마다 독립적인 공간(컨테이너)에서 실행되어 서로 영향을 주지 않습니다.
Docker를 실무에서 어떻게 쓰이나?
개발 환경 구성: 개발자들이 똑같은 환경에서 협업할 수 있게 합니다.
배포 환경 구성: 한 번에 여러 서버에 앱을 배포할 때 아주 유용합니다.
마이크로서비스 아키텍처: 작은 서비스들로 나눠 각각의 앱을 Docker로 관리합니다.
테스트 환경 구성: DB, 웹 서버 같은 환경을 빠르게 만들고 지울 수 있어 테스트에 유리합니다.