dev.to사이트를 둘러보다가 Docker 관련하여 일목요연하게 설명되어있는 포스팅이 있어서, 영어 원문을 번역하여 가져오게 되었다(원문 사이트: https://dev.to/hasanelsherbiny/docker-and-containerization-4p7d)
Docker 환경을 구축하기 이전에 Docker 의 특성에 대해 이해하는 내용이 될 것이다.
현대 소프트웨어 개발 세계에서 Docker는 애플리케이션이 개발, 배포 및 관리되는 방식을 혁신하는 획기적인 기술로 등장했다. 이 포스팅에서는 Docker의 개념, 이점, 구성 요소 및 소프트웨어 개발 환경에 대한 깊은 영향을 자세히 살펴본다.
Containerization이 무엇인가?
Containerization을 사용하면 개발자가 애플리케이션을 캡슐화할 수 있다. 필요한 모든 라이브러리, 종속성 및 구성과 함께 컨테이너라고 하는 경량의 독립형 단위로 만들어진다. 이러한 컨테이너는 다양한 환경에서 일관되게 실행될 수 있으므로 애플리케이션이 배포된 위치에 관계없이 동일한 방식으로 작동한다.
Docker는 무엇인가?
Docker는 애플리케이션과 해당 종속성을 패키징, 배포 및 관리하는 표준화된 방법을 제공하는 오픈소스 플랫폼이다. Docker는 기본적으로 containerization이라는 기술을 활용한다.
Docker를 사용하는 이유는 무엇인가?
일관성: 컨테이너는 개발, 테스트 및 프로덕션 환경 전반에서 일관된 애플리케이션 동작을 보장하여 “내 컴퓨터에서는 작동하는데요” 하는 두려운 문제를 줄인다.
- 격리: 컨테이너는 애플리케이션과 해당 종속성을 격리하여 여러 애플리케이션이 동일한 호스트환경을 공유할 때 발생할 수 있는 충돌 및 호환성 문제를 방지한다.
- 효율성: 컨테이너는 호스트 운영 체제의 커널을 공유하므로 리소스 소비 측면에서 가볍고 효율적이다.
- 이식성: Docker 컨테이너는 개발자의 노트북, 데이터 센터 서버, 클라우드 기반 환경 등 Docker를 지원하는 모든 플랫폼에서 실행될 수 있다.
- 확장성: Docker는 컨테이너의 빠른 복제를 허용하여 애플리케이션 확장을 단순화하고 증가된 트래픽을 더 쉽게 처리할 수 있도록 해준다.
- 빠른 배포: 컨테이너를 빠르게 가동 및 축소할 수 있으므로 업데이트와 수정 사항을 빠르게 배포할 수 있다.
Docker Components
- Docker Engine: Docker의 핵심으로 컨테이너 관리, 런타임, 이미지 구축을 담당한다. 이는 서버, REST API 및 명령줄 인터페이스로 구성된다.
- Images: Docker 이미지는 애플리케이션, 해당 코드, 런타임, 라이브러리 및 종속성을 정의하는 템플릿이다. 이미지는 컨테이너를 만드는 데 사용된다.
- Containers: 호스트 시스템에서 격리된 프로세스로 실행되는 Docker 이미지의 인스턴스이다.
- Dockerfile: Docker 이미지를 빌드하기 위한 지침이 포함된 텍스트 파일이다. 기본 이미지, 종속성, 구성 등을 지정한다.
- Registry: Docker 이미지용 저장소이다. 가장 잘 알려진 레지스트리는 Docker Hub이지만 내부용으로 개인 레지스트리를 설정할 수도 있다.
Docker Workflow
Develop: 개발자는 애플리케이션의 환경과 종속성을 정의하는 Dockerfile을 작성하여 Docker 이미지를 생성한다.
- Build: Docker 이미지는 Dockerfile의 지침을 따르는 docker build 명령을 사용하여 빌드된다.
- Ship: 이미지가 Docker 레지스트리로 푸시되어 distribution 및 deployment에 사용할 수 있다.
- Run: 컨테이너는 Docker 이미지를 사용하여 생성되고 시작된다. 개발자는 테스트 및 디버깅을 위해 자신의 컴퓨터에서 컨테이너를 실행할 수 있다.
Orchestrate: 복잡한 애플리케이션의 경우 Docker를 Kubernetes와 같은 오케스트레이션 도구와 통합하여 커넽이너 배포, 크기 조정 및 로드밸런싱을 관리할 수 있다.
CI/CD(Continuous Integration/Continuous Deployment): Docker는 테스트, 구축 및 배포 파이프라인의 자동화를 촉진하여 릴리스 주기를 단축한다.
하이브리드 클라우드 환경: Docker의 이식성 덕분에 온프레미스 환경과 클라우드 환경 간에 애플리케이션을 더 쉽게 이동할 수 있다.
#Reference
https://dev.to/hasanelsherbiny/docker-and-containerization-4p7d
'Server > Docker' 카테고리의 다른 글
[Docker] Ubuntu 18.04에 docker 설치하기 (0) | 2024.07.13 |
---|---|
(Docker) 알고 있어야 할 상위 10가지 Docker 명령 (0) | 2024.02.16 |
[Docker] NodeJS 웹 앱의 도커라이징 (0) | 2022.05.02 |
[Docker] Dockerfile에 대해 (0) | 2022.05.02 |
[Docker] Docker에 대해 (0) | 2022.05.02 |