코드의 통합, 테스트, 배포의 단계를 유지하며 자동화
코드 변경 → 지속적 통합 → 자동 인수 테스트 → 구성 관리
코드가 올바르게 빌드 및 통합되는지를 자동으로 확인
리포지토리에서 코드를 체크아웃
빌드를 수행하고 단위테스트를 수행
코드 품질을 검증
제품이 릴리스할 준비가 되었는지를 확인
통합 테스트, 인수 테스트, 비기능적 분석(성능, 확장성, 보안) 등을 포함
소프트웨어와 환경 변화를 추적하고 제어
필수 도구 준비와 설치
응용의 배포와 관련한 다양한 서비스 인스턴스와 배포 버전 관리
컨테이너 가상화 및 클러스터 운용
소프트웨어 개발 파이프라인 자동화 서버
구성 관리 자동화
소프트웨어 버전 관리(SCM; Source Code Management)
그 외
물리적인 컴퓨팅 자원의 특징을 다른 시스템 응용 프로그램, 최종 사용자들이 사원과 상호작용하는 방식으로부터 감추는 기술
하이퍼바이저(hypervisor)를 이용
Type1: 네이티브(native) 또는 베어메탈(bare-metal)형
Type2: 호스트형(hosted)
호스트 OS의 컨테이너 기술을 이용
Linux, Windows, MacOS 상에서 실행되는 컨테이너 엔진을 제공
AWS, GCP, Azure 등의 클라우드 컴퓨팅 인프라와 결합하면 더욱 유연한 운영이 가능
응용을 실행하는 데 필요한 모든 파일들과 그것을 실행하는 방법을 한데 묶어 놓은 것
상태를 저장하지 않는(stateless) 방식 - 네트워크로 전송, 레지스트리에 저장, 이름 및 버전 지정 가능
계층화되어 있다는 특징을 가지고 있으며, 어떤 이미지로부터 다른 이미지를 만드는 것이 가능
이미지의 실행 인스턴스(instance)
하나의 이미지로부터 여러 컨테이너(인스턴스)를 만들어 동일한 응용을 여러 개 실행할 수 있음(각각은 독립)
상태를 저장하는 (stateful) 방식 - 컨테이너를 사용하면서 상태를 변경할 수 있음
docker run <이미지 이름>
: 이름이 주어진 이미지를 로컬에서 또는 레지스트리에서 가져다가 컨테이너를 만들어 실행
docker ps
: 현재 실행중인 컨테이너들의 정보를 조회
docker ps -a
: 현재 실행중이거나 중단되어 있는 컨테이너들의 정보를 조회
docker images
: 로컬 컴퓨터에 가지고 있는 이미지들의 정보를 조회
docker stop <컨테이너 이름/ID>
: 현재 실행중인 컨테이너의 실행을 중단(컨테이너가 없어지지는 않음)
docker rm <컨테이너 이름/ID>
: 컨테이너 삭제
docker rmi <이미지 이름/ID>
: 도커 이미지 삭제