Docker 도커
https://docs.docker.com/get-started/overview/
컨테이너 가상화 방식 기술
애플리케이션을 개발, 제공 및 실행하기 위한 개방형 플랫폼
Docker를 사용하면 애플리케이션을 인프라에서 분리하여 소프트웨어를 신속하게 제공
코드 전달, 테스트 및 배포 지연시간을 줄임(코드 작성과 프로덕션 환경 사이)
Docker는 개발자가 애플리케이션과 서비스를 제공하는 로컬 컨테이너를 사용하여 표준화된 환경에서 작업할 수 있도록 하여 개발 수명 주기를 간소화
컨테이너는 CI/CD(지속적인 통합 및 지속적 전달) 에 적합
Docker 플랫폼
컨테이너라고 하는 격리된 환경에서 애플리케이션을 패키징하고 실행하는 기능 제공
컨테이너
실행 가능한 이미지 인스턴스, Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지 이동 또는 삭제 가능
가상화(Virtualization)
자원을 가상적으로 분할하여 여러 개의 가상 환경을 만들어 내는 기술
ex) 자원 = 메모리, 하드웨어, 컨테이너, 네트워크
가상머신
가상 머신은 하나의 호스트 OS 위에 가상 머신을 만들고, 거기에 운영체제를 설치, 사용, 즉 가상 머신마다 커널이 다르다
가상화 기술은 서로 다른 환경(로컬, 테스트, 프로덕션)을 어떻게 효율적으로 에뮬레이트할지를 지향
하이퍼바이저(Hypervisor)
가상머신을 생성하고 구동하는 소프트웨어
OS에 자원을 할당 및 조율
Host OS가 존재하기도 함
컨테이너
컨테이너 기술은 가상 머신과 다르게 따로 가상 하드웨어를 만들지 않는다. 하나의 호스트 OS 위에 컨테이너 엔진을 설치하고, 그 위에 컨테이너를 만드는 것이다.
컨테이너 기술은 애플리케이션의 실행환경을 모아서 이식성을 높이고 확장성이 좋은 환경에서 작동하는 것을 지향
가상머신과 컨테이너의 공통점
- 환경 격리 : 두 기술 모두 애플리케이션을 격리된 환경에서 실행하여, 다른 시스템이나 애플리케이션과의 충돌을 방지
- 이식성 : 소프트웨어를 하나의 환경에서 다른 환경으로 쉽게 이전 가능
- 리소스 활용의 최적화 : 기존의 물리적 하드웨어 자원을 보다 효율적으로 사용
가상머신과 컨테이너의 차이점
- 가상화 레벨
- 리소스 사용
- 부팅 시간
- 관리 및 유지보수
커널
컴퓨터 운영체제의 핵심이 되는 컴퓨터 프로그램
컨테이너는 리눅스 커널의 기능을 사용하여 만들어짐
chroot : 파일 시스템을 격리
namespace : 프로세스 격리
cgroup : 하드웨어 자원 격리
설치
https://docs.docker.com/desktop/install/mac-install/
Docker 아키텍처
Docker는 클라이언트-서버 아키텍처를 사용
Docker 클라이언트는 Docker 컨테이너를 구축, 실행 및 배포하는 무거운 작업을 수행하는 Docker 데몬과 통신
Docker 클라이언트와 데몬은 동일한 시스템에서 실행
Docker 클라이언트를 원격 Docker 데몬에 연결 가능
Docker 클라이언트와 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신
Docker 데몬
도커 엔진의 핵심 구성요소
Docker APi 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨과 같은 개체를 관리
컨테이너를 생성, 시작, 중지, 삭제하는 등의 작업을 실행
이미지
Docker 컨테이너를 생성하기 위한 지침이 포함된 읽기 전용 템플릿
도커 컨테이너 생명주기
1. 생성(create) + 시작(start) = 실행(run)
docker create <이미지이름>
create 명령어를 실행하면 컨테이너 ID를 반환합니다.
docker start <이미지ID>
start 명령어를 실행하면 컨테이너가 실행됩니다.
2. 중지(stop), 즉시 중지(kill)
docker stop <이미지ID>
stop 명령어의 경우 stop 요청 전 작업을 마치고 중지를 합니다.
docker kill <이미지ID>
kill 명령어의 경우 즉시 정지합니다.
3. 삭제(rm)
docker rm <이미지ID>
docker rm ‘docker ps -a -q`
컨테이너를 완전 삭제하며, 해당 컨테이너가 삭제 전 중지되어야 삭제가 가능합니다.
'Docker > 1. Docker' 카테고리의 다른 글
Docker + Mysql 구성한 Database 원격 접근 (0) | 2024.07.14 |
---|