Docker는 소프트웨어 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있도록 해주는 플랫폼이다. 이를 통해 애플리케이션과 그 종속성을 하나의 패키지로 묶어, 어디서나 일관되게 실행할 수 있다. Docker는 특히 개발, 테스트, 배포 환경 간의 차이를 줄이는 데 매우 유용합니다.
1. 배포 과정 비교
1.1 기존 CI/CD 배포
① 개발자가 로컬 환경에서 코드를 작성한다.
② 개발자가 작성한 코드를 GitHub 저장소에 푸시(push)한다.
③ 배포 환경과 동일한 환경을 세팅 후 테스트, 실행 가능한 형태로 빌드한다.
④ EC2에 배포 환경을 세팅 후 배포한다.
1.2 도커를 사용한 CI/CD 배포
① 개발자가 로컬 환경에서 코드를 작성한다.
② 개발자가 작성한 코드를 GitHub 저장소에 푸시(push)한다.
③ 로컬 환경에서 테스트, 빌드 후 도커 이미지를 생성한다.
④ EC2에 도커 설치 후 도커 이미지를 푸시한다.
기존의 배포는 개발 환경과 배포 환경이 일치하지 않아 동작하지 않는 문제가 발생했다. 하지만 도커를 사용하면 동일한 도커 이미지 환경에서 실행되기 때문에 배포 환경에 구애받지 않는다.
2. 도커 컨테이너(Docker Container)
도커 컨테이너(Docker Container)는 응용 프로그램과 그 응용 프로그램이 동작하는 데 필요한 모든 것(라이브러리, 설정 파일, 환경 변수 등)을 패키지화하여 일관된 실행 환경을 제공하는 경량화된 가상화 기술이다. 도커 컨테이너를 사용하면 개발, 테스트, 배포 환경 간의 차이를 최소화하여 애플리케이션의 일관된 동작을 보장할 수 있다.
3. 도커 이미지(Docker Image)
도커 이미지는 컴퓨터 프로그램과 그 프로그램이 필요한 모든 것을 하나의 패키지로 묶은 파일이다. 이 패키지는 운영 체제, 프로그램, 라이브러리 등 프로그램이 실행되는 데 필요한 모든 것을 포함하고 있다. 이미지는 애플리케이션과 필요한 라이브러리, 환경 설정을 포함한 실행 가능한 스냅샷이다.
4. 이미지와 컨테이너의 관계
이미지(Docker Image): 요리 레시피와 같다. 어떻게 요리를 만들지에 대한 지침이 포함되어 있다. 하지만, 레시피 자체는 요리가 아니다.
컨테이너(Docker Container): 레시피를 따라 만든 실제 요리다. 이미지를 기반으로 실행되는 실제 프로그램 환경이다.
Share article