Docker
어플리케이션을 컨테이너라는 독립적인 환경에서 실행할 수 있도록 해주는 오픈 소스 플랫폼이다.
필요한 라이브러리, 종속성 등을 포함하여, 애플리케이션이 어디서나 동일하게 실행될 수 있게 해준다.
Docker를 사용하면, 개발자는 애플리케이션을 "컨테이너"로 패키징하여 어떤 환경에서든 실행 가능하게 만들 수 있다.
- 컨테이너(Container): 앱과 그 실행에 필요한 모든 파일, 라이브러리, 종속성을 포함하는 격리된 실행 환경
- 앱이 어디에서나 일관되게 실행될 수 있게 해줌
- 이미지(Image): 컨테이너를 실행하기 위한 템플릿
- 어플리케이션, 라이브러리, 환경설정 등이 포함되어 있으며, 이를 바탕으로 컨테이너가 생성된다
- Dockerfile: 하나의 이미지를 생성하기 위한 설정 파일
- 이미지를 어떤 기반으로 할지, 어떤 애플리케이션을 설치할지, 어떤 설정을 할지 등을 명시한다
- Docker Compose: 여러 컨테이너를 동시에 정의하고 관리할 수 있게 해주는 도구
- Docker Compose는 여러 컨테이너를 동시에 실행, 중지 등 네트워크를 구성하는 등의 작업을 자동화한다.
- 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 명령어를 사용하여 다른 로컬 환경에서도 동일한 환경을 구현할 수 있다
'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 |