소프트웨어 운영 플랫폼의 흐름
하드웨어 가격은 내려가고 성능은 좋아진다.
운영 서비스는 대용량이 되어간다.
- 물리 서버 (Bare Metal)
- 하나의 물리 서버에 다양한 서비스를 함께 관리
- 하나의 서버에 여러 서비스가 있어서 관리가 어려우며, 서로의 환경설정이 충돌할 가능성
- 가상화 기술 (Hypervisor)
- 하나의 서버에 가상 머신을 만들고 가상머신 안에 각 애플리케이션을 배포하고 운영
- 서비스 운영 관리가 쉬워졌으나, 서비스 환경에서는 Scale-In & Scale-Out가 요구되기 시작
- Container Engine
- OS 위에 컨테이너 엔진을 올려 플랫폼 역할을 하며 컨테이너 서비스들을 관리
- 컨테이너는 애플리케이션과 애플리케이션을 운영하기 위한 최소한의 환경만 포함되어 있기 때문에 용량이 적다
- 따로 분리되어 있는 환경과 쉽게 확장할 수 있는 구조
Linux와 관계
- 도커는 리눅스 커널의 기능으로 구성되어있다
- 도커가 활용한 리눅스 커널 기능
- chroot : 독립된 공간 형성
- namespace : 분리된 환경 지원
- cgroup : 필요한 만큼의 HW 지원
Docker 사용 이유
- 과거 일반 애플리케이션의 경우 개발 환경과 실제 운영 환경이 달라 어려움이 있었다
- 개발자가 개발한 그대로 운영환경에 배포할 수 있다
- 확장성 : 요구사항에 맞춰 서비스의 확장, 축소가 쉬워졌다
컨테이너와 컨테이너 이미지
- Docker Host : Docker Daemon이 실행되고 있는 linux 커널이 있는 환경
- container image(READ-ONLY) -> 실행 -> container (READ&WRITE)
- 컨테이너 이미지 레이어 예시
- base image
- source code
- execute command
- hub에서 컨테이너 이미지 검색 후 실행 프로세스
docker search nginx docker pull nginx:lastet docker run -d --name web -p 80:80 nginx:latest
Docker 저장소 용어
- Registry
- 도커 이미지를 관리하는 공간
- Docker Hub, Private Docker Hub, 회사 내부용 등
- default registry : Docker Hub
- Repository
- 레지스트리 내에 도커 이미지가 저장되는 공간
- Github의 레파지토리와 비슷한 역할
- Tag
- 같은 이미지 내 버전관리 용도
Docker 라이프사이클 관련 명령어
# 컨테이너 상태 확인
docker ps
# 이미지를 사용해 컨테이너 생성 & 실행
docker run -d {image-name}
# 기존에 중지되어 있었던 컨테이너 실행
docker start {container-id} || {container-name}
# 원격 저장소에 있는 이미지 내려받기
docker pull {image-name}
# 로컬에 저장된 이미지 확인
docker image ls
# 컨테이너 중지
docker stop {container-id} || {container-name}
# 이미지 삭제
docker rmi {image-name}
Docker 관리 관련 명령어
# 컨테이너 내부에 실행 중인 프로세스 출력
docker top {container-id} || {container-name}
# 컨테이너 로그 확인
docker logs {container-id} || {container-name}
# 현재 컨테이너에 추가 명령어를 더 설정하고 싶을 때, bash에서 설정
docker exec {container-id} || {container-name} /bin/bash
Dockerfile 상세 내용 참고
https://code-with-me.tistory.com/21
Docker Layer 구분
- hub에서 docker 컨테이너 이미지 불러오기
# 이미지 내려받기
docker search nginx
docker pull nginx
# pull 받은 이미지는 다음 명령어로 확인 가능하다
docker image ls
- 이미지는 여러 레이어로 구성되어 있다
- root 계정의 /var/lib/docker/overlay2에 검색&불러오기 한 이미지의 레이어들이 저장되어 있다
- /var/lib/docker/overlay2 내부 레이어의 개수는 search&pull 실행한 이미지의 레이어 개수와 일치한다
확인
- 레이어 저장 위치 /var/lib/docker/overlay2
- nginx의 이미지 레이어 : 7개
- 이미지 저장 경로 /var/lib/docker/overlay2 에 생성된 이미지 레이어 개수 : 7개
7개로 각각 레이어 개수가 같다
'DevOps' 카테고리의 다른 글
Kubernetes : kubectl() { Labeling } (0) | 2024.04.16 |
---|---|
Docker : Dockerfile() { Dockerfile 명령어 정리, Dockerfile 빌드 } (0) | 2024.04.09 |
Docker : Install() { Docker 설치, Rootless Mode 설정 } (0) | 2024.04.09 |
댓글