CI\CD

docker란?, docker 사용방법

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

Docker

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

어떤 앱이든 컨테이너 안에 넣어두면 어디서든 동일하게 실행될 수 있도록 해주는 도구라고 보면 된다.

기본적으로 필요한 라이브러리, 설정, 종속성 등을  "컨테이너"로 패키징하므로 환경이 달라도 똑같이 동작하게 해준다.

 

✅ 이미지 (Image)

  • 컨테이너를 실행하기 위한 템플릿(실행 전의 정적인 스냅샷)
  • 애플리케이션, 라이브러리, 환경설정 등이 포함되어 있으며, 이 이미지를 바탕으로 컨테이너가 만들어진다

 

✅ 컨테이너 (Container)

  • 이미지를 실행시켜 동작 중인 상태
  • 애플리케이션과 그 실행에 필요한 모든 파일, 라이브러리, 종속성 등을 포함한 격리된 실행 환경
  • 이 안에 들어 있는 앱은 외부 환경과 상관없이 어디에서나 일관되게 실행된다

 

✅ Dockerfile

  • 이미지를 만들기 위한 설정 파일
  • 어떤 OS를 기반으로 할지, 어떤 애플리케이션을 설치할지, 어떤 설정을 적용할지 등을 직접 코드로 작성한다

 

✅ Docker Compose

  • 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있게 해주는 도구
  • 예: 웹 서버 + 데이터베이스를 동시에 실행하고 연결해주는 설정을 한번에 처리 가능

 

✅ Docker Hub

  • Docker 이미지를 공유하는 중앙 저장소 (GitHub와 비슷한 개념)
  • 다른 사람이 만든 이미지를 다운로드해서 쓸 수 있고, 내가 만든 이미지를 업로드해서 공유 가능
  1.  

 

장점

 

1. 환경 일관성

  • 어떤 운영체제든지 동일한 방식으로 앱이 돌아감.
  • 개발, 테스트, 배포 환경이 동일한 컨테이너 환경에서 실행되기 때문에 "내 컴퓨터에선 잘 됐는데?"라는 말이 사라짐

2. 의존성 관리

  • 필요한 라이브러리, 툴, 설정을 컨테이너 안에 모두 포함
  • 외부 환경에 영향받지 않음

3. 배포 자동화 & DevOps

  • CI/CD 파이프라인 구축에 적합
  • 빌드 → 테스트 → 배포 과정을 자동화하기 좋고, Kubernetes 같은 오케스트레이션 도구와도 잘 맞

4. 빠른 실행 속도

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

5. 버전 관리 & 롤백

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

6. 확장성 & 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을 생성한다.

필요에 따라 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 명령어를 사용하여 다른 로컬 환경에서도 동일한 환경을 구현할 수 있다