코드 저장소.

Docker 본문

DevOps/Docker

Docker

slown 2024. 9. 5. 21:29

목차

1.Dokcer?

2.Docker의 사용이유

3.Docker의 아키텍처

 

1.Dokcer?

Docker는 애플리케이션을 컨테이너(container)로 패키징, 배포 및 실행할 수 있게 해주는 오픈 소스 플랫폼입니다. 이 컨테이너는 애플리케이션과 그에 필요한 모든 라이브러리, 의존성, 설정 파일 등을 포함한 일종의 가상 환경을 제공합니다. 이를 통해 애플리케이션이 어떤 환경에서도 일관되게 실행될 수 있도록 해줍니다.

2.Docker의 사용이유

환경 일관성

  • 도커를 사용하면 개발, 테스트, 프로덕션 환경 간의 차이를 최소화할 수 있습니다. 컨테이너는 애플리케이션과 그에 필요한 모든 것을 포함하고 있기 때문에, 어디서 실행하든 동일한 환경에서 동작하게 됩니다. 이는 "로컬에서는 잘 작동했는데, 서버에서는 문제가 발생한다"는 상황을 방지합니다.

이식성

  • 도커 컨테이너는 운영 체제에 독립적입니다. 한 번 만든 이미지는 어떤 환경에서도 실행할 수 있기 때문에, 다양한 클라우드 플랫폼이나 온프레미스 서버에서 손쉽게 배포할 수 있습니다.

경량성

  • 도커는 기존의 가상 머신(VM)보다 훨씬 가볍습니다. 가상 머신은 자체 운영 체제를 포함하지만, 도커 컨테이너는 호스트 운영 체제를 공유하므로 시스템 자원을 더 적게 사용합니다. 이로 인해 더 많은 컨테이너를 하나의 서버에서 실행할 수 있습니다.

3.Docker의 아키텍처

 

도커의 아키텍처는 위의 사진과 같이 이루어져 있고 기본적으로 클라이언트-서버 구조로 이루어져 있습니다. 위의 그림을 좀더 자세하게 설명을 하면 다음과 같습니다.

 

1.Client 

 

클라이언트는 사용자가 도커 명령어를 입력을 하면 클라이언트는 명령어를 해석을 하고 Docker Daemon으로 api요청을 전송을 합니다.

 

2.Docker Deamon

 

도커 데몬은 클라이언트에서 보낸 api요청을 수신하고 이미지,컨테이너,네트워크 등을 관리를 하는 역할을 합니다. 도커 데몬은 시스템 백그라운드에서 실행되며, 도커 API를 통해 클라이언트와 통신합니다.

 

※이미지 

도커에서 사용되는 이미지는 컨테이너를 생성하기 위한 파일 시스템과 실행할 애플리케이션의 소스 코드, 라이브러리, 환경 설정 등의 모든 것을 포함하는 템플릿이다. 이미지는 읽기 전용으로 구성되어 있으며, 도커 컨테이너를 시작할 때 해당 이미지가 기반이 됩니다. 이미지는 여러 개의 레이어로 구성되어 있는데, 각 레이어는 변경 사항이 있는 파일 또는 설정을 포함하고 있으며, 이들 레이어는 상속 구조를 가지고 쌓여 최종 이미지를 구성한다. 이 레이어 구조로 인해 이미지 간에 공통된 부분을 효율적으로 공유할 수 있습니다.

이러한 이미지는 Dockerfile이라는 텍스트 파일을 사용하여 정의되는데, Dockerfile에는 기반 이미지, 추가할 파일, 실행할 명령어, 환경 변수 설정 등이 포함됩니다. 이미지는 도커 레지스트리에 저장되거나 공유될 수 있습니다.

 

※컨테이너

이미지를 실행한 결과로 생성되는 인스턴스를 의미한다. 사용자는 도커 클라이언트의 명령어를 호출함으로써, 컨테이너를 관리할 수 있다. 도커의 컨테이너는 네임스페이스와 컨트롤 그룹을 호스트 환경에서 격리시킨 하나의 프로세스로 컨테이너는 다양한 네트워크 네임스페이스와 연결될 수 있고, 새로운 볼륨을 해당 컨테이너 네임스페이스에 마운트 하는 것도 가능합니다.

 

3.Docker Registery

 

도커 레지스트리는 도커 이미지를 저장하는 저장소 역할을 합니다. Docker Hub는 퍼블릭 도커 레지스트리로, 도커는 레지스트리 기본 값으로 Docker Hub를 사용합니다. 사용자는 프라이빗 레지스트리를 구축하여 사용할 수 있다. 사용자가 docker pull 혹은 docker run과 같은 명령어를 실행하면, 도커는 사용자가 요청한 이미지를 도커 레지스트리에서 찾아서 가져옵니다. 사용자가 docker push 명령어를 실행하면 도커는 이미지를 레지스트리에 저장합니다.