본문 바로가기
DevOps/Docker

Docker란 무엇일까?

by 김승원이 2024. 3. 15.

Container를 다루는 기술이다.

도커란 Linux응용 프로그램들을 프로세스 격리 기술을 사용해 Container로 실행하고 관리하는 오픈소스 프로젝트이다. Window, Mac 등 다른 플렛폼은 Docker에서 다루지 않는다.

Linux의 응용프로그램들을 Linux 기술 중 프로세스 격리 기술을 활용해 Container로 실행할 수 있는 것이 Docker이다. Docker Engine 위에서 다양한 Linux 응용 프로그램을 다룰 수 있다.

Docker에서 빠지지 않는 기술이 가상화(Virtual)이다.

가상화란 실제 컴퓨터를 다룰 때 필요한 CPU, Storage, Memory 등의 자원들을 더 효과적으로 사용하기 위한 기술이다. 가상화 기술은 CPU가상화, Storage가상화, Network 가상화 등 여러가지 분야에서 많이 발전하고 있다.

가상화 방법 중 Virtual Machines은 OS가 들어가 resource가 효과적으로 사용되기 힘들다.

그래서 등장한게 Container Engine이다. OS위에 Container Engine을 올리고 Linux응용 프로그램들을 좀 더 경량화해서 구동시키자! 하는 컨셉에 의해 등장했다. Container 기술을 바탕으로 더 효과적으로 Linux응용 프로그램을 다룰 수 있게 되었다.

 

Docker Architecture

도커는 Client가 명령어를 통해 Host(Deamon)에 명령을 실행한다. 실행되면 Deamon에서는 image를 이용해 실제 실행이 되는 Container를 만들어 운영하게 된다. 이 때 다양한 명령어를 사용하게 된다. 여기서 등장하는 것이 image라는 컨셉이다.

Docker에서 image는 앱스토어의 앱이라고 생각하면 편하다. REGISTRY에 다양한 image 파일들이 업로드 돼어있고 그 image파일들을 다운받아 실행하면 그 환경이 Container인 것이다.

REGISTRY에서 image 파일을 다운받아 Container 환경에서 구동하는 것이다.

Docker에서 다루는 image들은 모두 Linux 응용 프로그램 image들이고 REGISTRY는 Docker에서 운영하는 Docker Hub를 이용할 수도 있고 사용자가 직접 REGISTRY를 만들고 구축할 수도 있다.

Container의 특징

가상 서버보다 이미지의 크기도 작고 Memory 사용량도 적고 벤치 마크 성능, OS 기동 시간도 압도적이다.

이런 특징을 바탕으로 Container기술이 많이 사용되게 되었다. 그리고 그 기술 중 가장 표준이 되는 것이 Docker이다.

Docker가 필요한 이유

  • 일반적인 시스템 개발에서 제품 환경 운영까지 여러 환경을 거치게 된다.
    1. 개발 환경
    2. 테스트 환경
    3. 스테이징 환경
    4. 제품 환경

각 환경은 서로 다른 아래 환경으로 구성된다.

  • 하드웨어
  • OS
  • 미들 웨어

우리가 개발한 앱들은 위 하드웨어, OS, 미들웨어의 영향을 크게 받기 때문에 개발 환경의 내용이 테스트 환경, 스테이징, 제품 환경에서 잘 작동하지 않을 수 있다. 이런 어려움을 해결하기 위해 등장한 것이 Docker이다. Docker는 인프라 구성 정보를 txt파일로 작성한 뒤, 필요시 build라는 과정을 거쳐 Docker image파일을 만들게 된다.

마치 CD처럼 준비해둔 뒤 필요할 때 사용하는 것이다. 이런 것들을 Container기반으로 활용할 수 있게 제공하는 것이 Docker이다.

Container를 다루는 기술이다.

도커란 Linux응용 프로그램들을 프로세스 격리 기술을 사용해 Container로 실행하고 관리하는 오픈소스 프로젝트이다. Window, Mac 등 다른 플렛폼은 Docker에서 다루지 않는다.

Linux의 응용프로그램들을 Linux 기술 중 프로세스 격리 기술을 활용해 Container로 실행할 수 있는 것이 Docker이다. Docker Engine 위에서 다양한 Linux 응용 프로그램을 다룰 수 있다.

Docker에서 빠지지 않는 기술이 가상화(Virtual)이다.

가상화란 실제 컴퓨터를 다룰 때 필요한 CPU, Storage, Memory 등의 자원들을 더 효과적으로 사용하기 위한 기술이다. 가상화 기술은 CPU가상화, Storage가상화, Network 가상화 등 여러가지 분야에서 많이 발전하고 있다.

가상화 방법 중 Virtual Machines은 OS가 들어가 resource가 효과적으로 사용되기 힘들다.

그래서 등장한게 Container Engine이다. OS위에 Container Engine을 올리고 Linux응용 프로그램들을 좀 더 경량화해서 구동시키자! 하는 컨셉에 의해 등장했다. Container 기술을 바탕으로 더 효과적으로 Linux응용 프로그램을 다룰 수 있게 되었다.

Docker Architecture

도커는 Client가 명령어를 통해 Host(Deamon)에 명령을 실행한다. 실행되면 Deamon에서는 image를 이용해 실제 실행이 되는 Container를 만들어 운영하게 된다. 이 때 다양한 명령어를 사용하게 된다. 여기서 등장하는 것이 image라는 컨셉이다.

Docker에서 image는 앱스토어의 앱이라고 생각하면 편하다. REGISTRY에 다양한 image 파일들이 업로드 돼어있고 그 image파일들을 다운받아 실행하면 그 환경이 Container인 것이다.

REGISTRY에서 image 파일을 다운받아 Container 환경에서 구동하는 것이다.

Docker에서 다루는 image들은 모두 Linux 응용 프로그램 image들이고 REGISTRY는 Docker에서 운영하는 Docker Hub를 이용할 수도 있고 사용자가 직접 REGISTRY를 만들고 구축할 수도 있다.

Container의 특징

가상 서버보다 이미지의 크기도 작고 Memory 사용량도 적고 벤치 마크 성능, OS 기동 시간도 압도적이다.

이런 특징을 바탕으로 Container기술이 많이 사용되게 되었다. 그리고 그 기술 중 가장 표준이 되는 것이 Docker이다.

Docker가 필요한 이유

  • 일반적인 시스템 개발에서 제품 환경 운영까지 여러 환경을 거치게 된다.
    1. 개발 환경
    2. 테스트 환경
    3. 스테이징 환경
    4. 제품 환경

각 환경은 서로 다른 아래 환경으로 구성된다.

  • 하드웨어
  • OS
  • 미들 웨어

우리가 개발한 앱들은 위 하드웨어, OS, 미들웨어의 영향을 크게 받기 때문에 개발 환경의 내용이 테스트 환경, 스테이징, 제품 환경에서 잘 작동하지 않을 수 있다. 이런 어려움을 해결하기 위해 등장한 것이 Docker이다. Docker는 인프라 구성 정보를 txt파일로 작성한 뒤, 필요시 build라는 과정을 거쳐 Docker image파일을 만들게 된다.

마치 CD처럼 준비해둔 뒤 필요할 때 사용하는 것이다. 이런 것들을 Container기반으로 활용할 수 있게 제공하는 것이 Docker이다.

Container를 다루는 기술이다.

도커란 Linux응용 프로그램들을 프로세스 격리 기술을 사용해 Container로 실행하고 관리하는 오픈소스 프로젝트이다. Window, Mac 등 다른 플렛폼은 Docker에서 다루지 않는다.

Linux의 응용프로그램들을 Linux 기술 중 프로세스 격리 기술을 활용해 Container로 실행할 수 있는 것이 Docker이다. Docker Engine 위에서 다양한 Linux 응용 프로그램을 다룰 수 있다.

Docker에서 빠지지 않는 기술이 가상화(Virtual)이다.

가상화란 실제 컴퓨터를 다룰 때 필요한 CPU, Storage, Memory 등의 자원들을 더 효과적으로 사용하기 위한 기술이다. 가상화 기술은 CPU가상화, Storage가상화, Network 가상화 등 여러가지 분야에서 많이 발전하고 있다.

가상화 방법 중 Virtual Machines은 OS가 들어가 resource가 효과적으로 사용되기 힘들다.

그래서 등장한게 Container Engine이다. OS위에 Container Engine을 올리고 Linux응용 프로그램들을 좀 더 경량화해서 구동시키자! 하는 컨셉에 의해 등장했다. Container 기술을 바탕으로 더 효과적으로 Linux응용 프로그램을 다룰 수 있게 되었다.

Docker Architecture

도커는 Client가 명령어를 통해 Host(Deamon)에 명령을 실행한다. 실행되면 Deamon에서는 image를 이용해 실제 실행이 되는 Container를 만들어 운영하게 된다. 이 때 다양한 명령어를 사용하게 된다. 여기서 등장하는 것이 image라는 컨셉이다.

Docker에서 image는 앱스토어의 앱이라고 생각하면 편하다. REGISTRY에 다양한 image 파일들이 업로드 돼어있고 그 image파일들을 다운받아 실행하면 그 환경이 Container인 것이다.

REGISTRY에서 image 파일을 다운받아 Container 환경에서 구동하는 것이다.

Docker에서 다루는 image들은 모두 Linux 응용 프로그램 image들이고 REGISTRY는 Docker에서 운영하는 Docker Hub를 이용할 수도 있고 사용자가 직접 REGISTRY를 만들고 구축할 수도 있다.

Container의 특징

가상 서버보다 이미지의 크기도 작고 Memory 사용량도 적고 벤치 마크 성능, OS 기동 시간도 압도적이다.

이런 특징을 바탕으로 Container기술이 많이 사용되게 되었다. 그리고 그 기술 중 가장 표준이 되는 것이 Docker이다.

Docker가 필요한 이유

  • 일반적인 시스템 개발에서 제품 환경 운영까지 여러 환경을 거치게 된다.
    1. 개발 환경
    2. 테스트 환경
    3. 스테이징 환경
    4. 제품 환경

각 환경은 서로 다른 아래 환경으로 구성된다.

  • 하드웨어
  • OS
  • 미들 웨어

우리가 개발한 앱들은 위 하드웨어, OS, 미들웨어의 영향을 크게 받기 때문에 개발 환경의 내용이 테스트 환경, 스테이징, 제품 환경에서 잘 작동하지 않을 수 있다. 이런 어려움을 해결하기 위해 등장한 것이 Docker이다. Docker는 인프라 구성 정보를 txt파일로 작성한 뒤, 필요시 build라는 과정을 거쳐 Docker image파일을 만들게 된다.

마치 CD처럼 준비해둔 뒤 필요할 때 사용하는 것이다. 이런 것들을 Container기반으로 활용할 수 있게 제공하는 것이 Docker이다.

'DevOps > Docker' 카테고리의 다른 글

Docker의 LifeCycle과 데이터 저장  (0) 2024.03.15
Docker Hub와 Image, Container  (0) 2024.03.15
Docker의 동작 원리  (0) 2024.03.15
NCP ubuntu에 Docker 설치하기  (1) 2024.03.15
Windows Docker 세팅하기  (0) 2024.03.15