Docker
Docker는 어플리케이션을 ‘컨테이너’라는 독립적인 환경에서 실행할 수 있도록 해주는 오픈 소스 플랫폼이다.
어떤 앱이든 컨테이너 안에 넣어두면 어디서든 동일하게 실행될 수 있도록 해주는 도구라고 보면 된다.
기본적으로 필요한 라이브러리, 설정, 종속성 등을 "컨테이너"로 패키징하므로 환경이 달라도 똑같이 동작하게 해준다.
✅ 이미지 (Image)
- 컨테이너를 실행하기 위한 템플릿(실행 전의 정적인 스냅샷)
- 애플리케이션, 라이브러리, 환경설정 등이 포함되어 있으며, 이 이미지를 바탕으로 컨테이너가 만들어진다
✅ 컨테이너 (Container)
- 이미지를 실행시켜 동작 중인 상태
- 애플리케이션과 그 실행에 필요한 모든 파일, 라이브러리, 종속성 등을 포함한 격리된 실행 환경
- 이 안에 들어 있는 앱은 외부 환경과 상관없이 어디에서나 일관되게 실행된다
✅ Dockerfile
- 이미지를 만들기 위한 설정 파일
- 어떤 OS를 기반으로 할지, 어떤 애플리케이션을 설치할지, 어떤 설정을 적용할지 등을 직접 코드로 작성한다
✅ Docker Compose
- 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있게 해주는 도구
- 예: 웹 서버 + 데이터베이스를 동시에 실행하고 연결해주는 설정을 한번에 처리 가능
✅ Docker Hub
- Docker 이미지를 공유하는 중앙 저장소 (GitHub와 비슷한 개념)
- 다른 사람이 만든 이미지를 다운로드해서 쓸 수 있고, 내가 만든 이미지를 업로드해서 공유 가능
장점
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 명령어를 사용하여 다른 로컬 환경에서도 동일한 환경을 구현할 수 있다
'CI\CD' 카테고리의 다른 글
Github, Jenkins, Docker를 활용한 CI/CD - 3 (0) | 2025.05.19 |
---|---|
Github, Jenkins, Docker를 활용한 CI/CD - 2 (0) | 2025.05.17 |
Github, Jenkins, Docker를 활용한 CI/CD - 1 (0) | 2025.05.17 |
docker로 jenkins 설치 (0) | 2025.05.09 |