해당 포스팅은 AWS의 포스팅된 "Docker란 무엇입니까?"과 docker 공식 문서, IBM 문서를 참고하여 작성하였습니다.
1.정의
1.1 Docker란?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 "컨테이너"라는 표준화된 유닛으로 패키징 하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것이다.
1.2 컨테이너란?
컨테이너는 호스트 시스템의 다른 모든 프로세스와 격리된 시스템의 샌드박스* 프로세스이다.
샌드박스란?
샌드박스란 외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안 형태이다. ...
고도로 제어되는 환경을 제공한다는 측면에서 샌드박스는 가상화의 특정 예시로 간주할 수 있다. 샌드박스는 호스트 장치에 위험을 주지 않게 하면서 바이러스나 기타 악성 코드를 포함할 수 있는 미검증된 프로그램을 테스트하기 위해 종종 사용된다. - 위키에서 발췌 -
샌드박스 처리 된 환경은 리소스를 영구적으로 제한하고, 호스트 시스템이나 운영 체제에 해를 끼치지 않으면서도 검증되지 않았거나 신뢰할 수 없는 프로그램을 격리하고 실행하는 데 자주 사용된다. - Red Hat에서 발췌 -
이러한 격리는 오랫동안 Lnux에 있었던 기능인 커널 네임스페이스 및 cgroup을 활용한다. 요약하면 컨테이너는 다음과 같다.
- 이미지의 실행 가능한 인스턴스이다. DockerAPI 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수이다.
- 로컬 머신, 가상 머신에서 실행하거나 클라우드에 배포할 수 있다.
- 이식 가능하다(모든 OS에서 실행 가능).
- 다른 컨테이너와 격리되며 자체 소프트웨어, 바이너리 및 구성을 실행한다.
1.3 칸테이너 이미지란?
컨테이너를 실행할 때 격리된 파일 시스템을 사용한다. 이 사용자 지정 파일 시스템은 컨테이너 이미지에서 제공한다. 이미지에는 컨테이너의 파일 시스템이 포함되어 있으므로 애플리케이션을 실행하는 데 필요한 모든 것(모든 종속성, 구성, 스크립트, 바이너리 등)이 포함되어야 한다. 이미지에는 환경 변수, 실행할 기본 명령 및 기타 메타데이터와 같은 컨테이너에 대한 다른 구성도 포함된다.
2. 작동방식
Docker는 코드를 실행하는 표준 방식을 제공한다. Docker는 컨테이너를 위한 운영 체제이다. 가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게(직접 관리해야 하는 필요성 제거) 컨테이너는 서버 운영 체제를 가상화한다. Docker는 각 서버에 설치되며 컨테이너를 구축, 시작 또는 중단하는 데 사용할 수 있는 간단한 명령을 제공한다.
3. 왜 사용해야 할까?
Docker를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동할 수 있다. 또한 리소스 사용률을 높여 비용을 절감할 수 있다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 된다.
- 개선되고 완벽한 이식성: Docker 컨테이너는 데스크톱, 데이터 센터 및 클라우드 환경에서 수정 없이 실행한다.
- 보다 경량의 중량과 보다 미세한 업데이트: Docker 컨테이너를 사용하면, 각 컨테이너에서 오직 하나의 프로세스만 실행할 수 있습니다. 이를 통해 업데이트나 수리를 위해 해당 파트 중 하나를 중지하는 동안에도 계속 실행될 수 있는 애플리케이션을 빌드할 수 있다.
- 자동화된 컨테이너 작성: Docker는 애플리케이션 소스 코드를 기반으로 컨테이너를 자동으로 빌드할 수 있다.
- 컨테이너 버전화: Docker는 컨테이너 이미지의 버전을 추적하고, 이전 버전으로 롤백하며, 버전을 빌드한 사용자와 빌드 방법을 추적할 수 있습니다. 심지어 이는 기존 버전과 새 버전 사이의 델타만 업로드할 수도 있다.
- 컨테이너 재사용: 특히 새 컨테이너를 빌드하기 위한 템플릿처럼, 기존 컨테이너는 기본 이미지로 사용될 수 있다.
- 공유 컨테이너 라이브러리: 개발자는 수천 개의 사용자가 기여한 컨테이너를 포함하는 오픈 소스 레지스트리에 액세스 할 수 있다.
참고
https://docs.docker.com/get-started/
https://aws.amazon.com/ko/docker/
https://aws.amazon.com/ko/docker/
'Docker' 카테고리의 다른 글
Docker Compose - 1 (0) | 2023.02.23 |
---|---|
Docker 명령어 정리 - 2 (0) | 2023.01.26 |
DockerFile 작성하기 - 구성과 명령어 정리 - 1 (0) | 2023.01.23 |
[Docker] 1. WSL2 에 Docker 개발 환경 구축하기 (0) | 2022.11.28 |
[완벽한 IT 인프라 구축을 위한 Docker] 1장 시스템과 인프라 기초지식 - 1 (0) | 2022.11.23 |