CI\CD

docker란?, docker 사용방법

KJihun 2025. 4. 24. 09:44
728x90

Docker

어플리케이션을 컨테이너라는 독립적인 환경에서 실행할 수 있도록 해주는 오픈 소스 플랫폼이다.

필요한 라이브러리, 종속성 등을 포함하여, 애플리케이션이 어디서나 동일하게 실행될 수 있게 해준다.

Docker를 사용하면, 개발자는 애플리케이션을 "컨테이너"로 패키징하여 어떤 환경에서든 실행 가능하게 만들 수 있다.

  1. 컨테이너(Container): 앱과 그 실행에 필요한 모든 파일, 라이브러리, 종속성을 포함하는 격리된 실행 환경
    • 앱이 어디에서나 일관되게 실행될 수 있게 해줌
  2. 이미지(Image): 컨테이너를 실행하기 위한 템플릿
    • 어플리케이션, 라이브러리, 환경설정 등이 포함되어 있으며, 이를 바탕으로 컨테이너가 생성된다
  3. Dockerfile: 하나의 이미지를 생성하기 위한 설정 파일
    • 이미지를 어떤 기반으로 할지, 어떤 애플리케이션을 설치할지, 어떤 설정을 할지 등을 명시한다
  4. Docker Compose: 여러 컨테이너를 동시에 정의하고 관리할 수 있게 해주는 도구
    • Docker Compose는 여러 컨테이너를 동시에 실행, 중지 등 네트워크를 구성하는 등의 작업을 자동화한다.
  5. Docker Hub: Docker 이미지를 공유할 수 있는 중앙 저장소(github와 유사)
    • 다른 개발자가 만든 이미지를 다운로드하거나, 자신이 만든 이미지를 업로드하여 공유할 수 있다.

 

장점

 

1. 환경 일관성

  • 개발, 테스트, 배포 환경이 동일한 컨테이너 환경에서 실행되기 때문에 예기치 못한 예외발생이 줄어듦
  • 어떤 운영체제든지 동일한 방식으로 앱이 돌아감.

2. 의존성 관리

  • 애플리케이션이 필요한 모든 라이브러리, 툴, 설정 등을 컨테이너 이미지에 포함시켜서 외부 환경과 독립적으로 작동함.

3. 배포 자동화 & DevOps

  • CI/CD 파이프라인에 적합. 빌드, 테스트, 배포가 자동화되기 쉬움.
  • Kubernetes 같은 오케스트레이션 도구와도 잘 맞음.

4. 빠른 실행 속도

  • 가상 머신(VM)보다 가볍고 빠름. OS 전체를 가상화하지 않기 때문에 부팅이 매우 빠름.

5. 버전 관리 & 롤백

  • 컨테이너 이미지는 버전 관리가 가능해서 문제 발생 시 이전 버전으로 롤백도 쉬움.

6. 확장성 & MSA

  • 각 서비스마다 컨테이너를 분리해서 관리가 가능하기에 MSA 환경에서 적합하다.
  • 스케일 업/다운이 쉬움.

 

 

사용방법

1. DockerDesktop 설치

 

 

2. 회원가입 및 로그인

 

3. Docker Hub 열기

Docker Hub를 클릭하였을 경우 웹 페이지로 이동하게 된다.

 

4. Create Repository 클릭

 

5.Repository명 작성 및 Create

무료버전의 경우, private 환경에서 협업을 진행할 수 없기에 public으로 생성하여야 한다.

 

 

6. Repository가 생성되었다면, 우측 상단에 저장할 수 있는 명령어가 생성된다.

 

 

 

7. 필요한 기능 세팅 (docker-compose.yml)

docker-compose.yml 파일 및 DockerFile을 생성한다.

(필요한 기능에 따라 GPT에게 docker-compose.yml 을 작성해달라고 요청 시, 적절하게 해준다)

필요에 따라 docker plugin 도 설치한다.

 

8. CMD 환경에서 docker-compose.yml 이 존재하는 폴더로 이동한다.

 

 

 

9. docker-compose up -d

해당 명령어를 실행하면 docker-compose.yml에 정의되어 있는 값들이 백그라운드에서 Docker 이미지를 빌드하고,

컨테이너를 생성하며, 서비스들을 실행한다.

 

 

 

10. 해당 시스템이 정상적으로 실행되었는지 확인한다

Docker Desktop

12. docker tag resources-rabbitmq:latest {유저명}/{레포지토리명}:{태그명}

정상적으로 실행이 되었다면 위의 명령어를 통해 이미지를 6번에서 획득한 해당 Repository명과 일치시킨다.

태그명 같은 경우 원하는 값으로 사용하면 된다.

13. docker push kjh950901/test:v1

해당 명령어를 입력하여 Repository에 이미지를 Push한다.

이후, Repository에 들어가면 push된 이미지가 보인다.

 

 

 

 

14. Tags 클릭

Tags를 클릭하면 표시되는 pull 명령어를 사용하여 다른 로컬 환경에서도 동일한 환경을 구현할 수 있다