목차
Docker 란 무엇인가요?
Docker란 애플리케이션을 빠르게 구축, 테스트 및 배포 할 수 있는 컨테이너 기반 오픈소스 가상화 플랫폼 입니다. Docker는 애플리케이션을 컨테이너로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드 등 애플리케이션을 실행하는데 필요한 모든 것이 담겨져 있습니다.
Docker를 사용하면 환경에 상관없이 애플리케이션을 신속하게 배포, 확장 할 수 있습니다.
가상화란 무엇인가요?
가상화란 하드웨어, 운영체제, 소프트웨어, 네트워크 등 다양한 컴퓨팅 리소스를 추상화하고 분할하여 여러 개의 독립된 환경으로 만드는 기술 입니다.
즉 하나의 물리적 서버를 여러 개의 가상 서버로 분할하여 사용하는 기술입니다.
이를 통해 하나의 물리적 서버를 최대한 활용할 수 있게 됩니다.
가상화의 장점과 단점은 뭔가요?
가상화의 장점으로는 효율적인 자원 관리, 비용 절감, 유연성 증가, 독립성 등이 있습니다.
가상화를 통해 물리적 자원을 여러 환경으로 분할해 사용합니다. 이로 인해 리소스를 최대한 활용할 수 있고 하드웨어 자원의 효율적인 관리와 하드웨어 구매 비용 절감을 얻을 수 있습니다.
또한 독립된 환경을 이루기에 하나의 환경에서 문제가 발생해도 다른 환경에 영향을 미치지 않습니다. 이로 인해 높은 안정성과 보안을 제공합니다.
가상화는 물리적인 제약 없이 쉽게 가상 머신을 생성하거나 삭제할 수 있어 유연성과 확장성이 높습니다.
가상화의 단점으로는 복잡성, 보안성 등이 있습니다.
가상 환경이 많아질수록 관리 대상이 늘어나므로 시스템이 복잡해 집니다.
한 가상 시스템에서 발생한 문제가 다른 시스템으로 전파될 수 있으므로 보안이 취약해질 수 있습니다.
컨테이너란 무엇인가요?
컨테이너는 가상화 기술 중 하나로 호스트 OS 상에 논리적인 구획을 만들고 애플리케이션과 그 애플리케이션을 실행하는데 필요한 모든 종속성을 하나의 패키지로 묶는 기술입니다. 컨테이너를 사용하면 마치 별도의 서버인 것처럼 사용할 수 습니다.
컨테이너의 장점과 단점은 무엇인가요?
컨테이너의 장점으로는 이식성, 리소스 효율, 빠른 시작 시간이 있습니다.
컨테이너는 애플리케이션과 그 종속성을 패키징하기 때문에 다양한 환경에서 일관되게 동작합니다.
컨테이너는 각자의 운영 체제를 가지지 않기 때문에, 가상 머신에 비해 더 적은 시스템 리소스를 사용합니다. 이로 인해 하나의 시스템에서 더 많은 애플리케이션 인스턴스를 실행할 수 있게 합니다.
컨테이너는 빠르게 시작되거나 중단할 수 있습니다. 이는 애플리케이션의 배포와 스케일링을 빠르게 수행할 수 있게 합니다.
컨테이너의 단점으로는 보안 취약과 저장소 설정 입니다.
컨테이너는 가상 머신보다 격리 수준이 낮아 하나의 컨테이너에서 발생한 보안 문제가 다른 컨테이너로 확산될 수 있습니다. 이를 위한 추가 조치가 필요합니다.
컨테이너는 일반적으로 무상태로 설계되기 때문에 데이터를 영구 저장하기 어렵습니다. 이 문제를 해결하기 위해 별도의 데이터 관리 및 저장소 전략이 필요합니다.
- 빠르게 시작되거나 중단할 수 있는 이유 (번외)
빠르게 시작되거나 중단할 수 있는 이유는 컨테이너의 핵심 설계 원칙과 관련이 있습니다.
컨테이너는 가상 머신에 비해 더 낮은 수준의 가상화를 제공하므로, 각 컨테이너는 별도의 운영 체제를 가지고 있지 않는다. 컨테이너는 호스트 시스템의 운영 체제 커널을 공유한다.
이 접근 방식의 결과로 컨테이너는 부팅 프로세스를 거치지 않아도 된다. 가상 머신을 시작할 때는 전체 운영 체제를 부팅해야 하지만, 컨테이너는 필요한 프로세스만 시작하면 된다. 이로 인해 컨테이너는 거의 즉시 시작되고, 중단된다.
또한 컨테이너는 프로세스와 그의 필요한 종속성만 포함하기 때문에 가상 머신보다 훨씬 작다. 이러한 작고 가벼운 특성 덕분에 컨테이너는 더 빠르게 시작되고, 더 적은 시스템 리소스를 차지하고, 빠르게 중단될 수 있다.
빠른 배포와 스케일링, 짧은 생명주기를 가진 애플리케이션에 대해 유용하다.
컨테이너와 가상 머신의 차이점은 무엇인가요?
차이점으로 가상화 수준을 얘기할 수 있습니다. 가상 머신은 하드웨어를 가상화하는 반면 컨테이너는 운영 체제 수준에서 가상화를 합니다.
가상 머신은 하드웨어를 가상화함으로 호스트 OS 위에 게스트 OS 를 올려 사용합니다. Host OS와 거의 완벽하게 격리되지만 무겁고 느려질 수 밖에 없습니다.
컨테이너는 운영 체제 수준에서 가상화 함으로 호스트 OS 와 Docker 엔진 위에서 동작하며 Host OS의 커널을 공유합니다. 커널을 공유하므로 io 처리가 쉽게 되어 성능 효율을 높일 수 있고 메모리, CPU, 디스크 공간 등의 리소스를 더욱 효율적으로 사용할 수 있게 됩니다.
Dockerfile 이란 무엇인가요?
Dockerfile 이란 Docker 이미지를 생성하기 위한 설정 파일 입니다. FROM, VOLUM, COPY 등의 명렁어를 사용합니다. 각 명령어는 Dockerfile 내에 독립적인 레이어를 정의하며, 이러한 레이어들이 쌓여 Docker 이미지를 형성합니다.
Docker 이미지란 무엇인가요?
Docker 이미지란 애플리케이션을 실행하는데 필요한 파일과 설정값들을 담아둔 패키지 파일 입니다. Docker 이미지는 층층이 쌓인 Layer 구조로 이루어져 있으면 새로운 파일을 받을 때 기존에 있는 Layer는 받아오지 않고 새로운 Layer 만 받아오게 됩니다. 이미지를 세세하게 나누어 자원 효율화가 높은 구조입니다.
Docker 허브란 무엇인가요?
Docker 허브란 도커 이미지를 생성, 저장, 공유하기 위한 클라우드 기반 서비스 입니다. Github 와 같은 공개 소프트웨어 레포지토리랑 비슷합니다. Github는 코드를 저장하지만 Docker 허브는 이미지를 저장합니다. Docker 허브를 통해 개발자들은 Docker 이미지를 쉽게 공유하고 다운받을 수 있습니다.