linux docker

정의: 도커

Docker는 컨테이너 기반 구현과 관련하여 사실상의 표준이 되었습니다. 소규모 구현부터 대규모 엔터프라이즈 애플리케이션까지 Docker는 컨테이너 기반 오케스트레이션의 기반 역할을 합니다.

Docker는 이식성을 위해 개발되고 최신 마이크로서비스 아키텍처에 맞게 설계된 방식으로 인해 짧은 시간 내에 DevOps 커뮤니티에서 큰 인기와 채택을 얻었습니다.

컨테이너의 진화

컨테이너화가 새로운 기술이라고 생각한다면 그렇지 않습니다. Google은 자체 컨테이너화 기술을 사용합니다. 수년간 인프라에서.

컨테이너의 개념은 2000년대에 시작되었습니다. 사실 그 뿌리는 프로세스의 루트 디렉터리를 변경하는 개념인 chroot가 있었던 1979년으로 거슬러 올라갑니다.

2000년에 시작된 컨테이너 기반 프로젝트 목록은 다음과 같습니다.

Linux 컨테이너(LXC)란 무엇입니까?

Docker의 개념을 직접 살펴보기 전에 먼저 Linux 컨테이너가 무엇인지 이해해야 합니다.

일반적인 가상화 환경에서는 하나 이상의 가상 머신이 Xen, Hyper-V 등과 같은 하이퍼바이저를 사용하여 물리적 서버에서 실행됩니다.

반면 컨테이너는 운영 체제 커널 위에서 실행됩니다. 이를 운영 체제 수준에서 가상화라고 부를 수 있습니다.. 컨테이너의 기본 개념을 알아보기 전에 두 가지 주요 Linux 개념을 이해해야 합니다.

  • 사용자 영역 : 사용자 프로그램(어플리케이션, 프로세스)의 실행에 필요한 모든 코드를 “사용자 공간”이라고 합니다. 예를 들어 파일 생성과 같은 프로그램 작업을 시작하면 사용자 공간의 프로세스는 커널 공간에 대한 시스템 호출을 만듭니다.
  • 커널 공간 : 커널 코드가 위치한 운영 체제의 핵심입니다.

컨테이너는 프로세스이다

Nginx 웹 서버와 같은 애플리케이션을 시작하면 실제로 프로세스가 시작됩니다. 프로세스 자체는 격리가 제한된 독립형 명령입니다.

실행하고 작동하는 데 필요한 파일과 구성만으로 프로세스를 격리할 수 있다면 어떨까요? 그것이 바로 컨테이너가 하는 일입니다.

컨테이너는 실제로 충분한 단열재를 갖춘 프로세스입니다. 사용자 공간 구성 요소 별도의 운영체제처럼 느껴지도록.

상위 컨테이너 프로세스에는 하위 프로세스가 있을 수 있습니다. 따라서 컨테이너도 프로세스 그룹이라고 말할 수 있습니다.

예를 들어 Nginx 서비스를 시작하면 상위 Nginx 프로세스가 시작됩니다. 그런 다음 상위 프로세스는 캐시 관리자, 캐시 로더 및 작업자와 같은 하위 프로세스를 처리합니다.

따라서 Nginx 컨테이너를 시작하면 격리된 환경에서 마스터 Nginx 프로세스를 시작합니다. 아래 섹션에서 이를 실제로 보여 드리겠습니다.

각 컨테이너에는 격리된 사용자 공간이 있습니다., 단일 호스트에서 여러 컨테이너를 실행할 수 있습니다. 이는 하나의 컨테이너가 전체 OS를 소유한다는 의미입니까? 아니요. 자체 커널이 있는 VM과 달리 컨테이너에는 특정 배포판과 관련된 필수 파일만 포함되어 있으며 공유 호스트의 커널을 사용합니다. 더욱 흥미로운 점은, 동일한 커널 공간을 공유하는 단일 호스트에서 Linux 배포판을 기반으로 다양한 컨테이너를 실행할 수 있습니다..

예를 들어 Ubuntu 서버에서 RHEL, CentOS, SUSE 기반 컨테이너를 실행할 수 있습니다. 이는 모든 Linux 배포판에서 사용자 공간만 다르고 커널 공간은 동일하기 때문에 가능합니다.

Linux 컨테이너의 기본 개념

다음 이미지는 Linux 연속체를 시각적으로 보여줍니다.

컨테이너는 네임스페이스와 cgroup이라는 Linux 커널의 두 가지 기능을 사용하여 호스트 내에서 격리됩니다.

실제 비유는 아파트 건물입니다. 하나의 큰 건물임에도 불구하고 각 아파트는 수도, 가스, 전기 계량기로 고유한 정체성을 가진 개별 가구로 격리되어 있습니다. 우리는 이러한 단열재를 구축하기 위해 콘크리트, 강철 구조물 및 기타 건축 자재를 사용합니다. 다른 집에 들어가도록 허용하지 않는 한 다른 집에 대한 가시성은 없습니다.

마찬가지로 여러 컨테이너를 포함하는 단일 호스트에 연결할 수 있습니다. 자체 CPU, 메모리, IP 주소, 마운트 지점, 프로세스로 컨테이너를 격리하려면 네임스페이스와 cgroup이라는 두 가지 Linux 커널 기능이 필요합니다.

A lire également  과두제: 정의

도커란 정확히 무엇인가요?

Docker는 오픈 소스 프로젝트입니다. Go로 작성되어 Dotcloud(PaaS 회사)에서 개발한 인기 있는 제품입니다.

이는 기본적으로 네임스페이스 및 cgroup과 같은 Linux 커널 기능을 사용하여 운영 체제에서 컨테이너를 생성하는 컨테이너 엔진입니다.

즉, LXC 섹션에서 배운 모든 컨테이너 개념과 기능은 Docker를 통해 매우 간단하게 수행됩니다. 몇 가지 Docker 명령과 설정을 실행하여 컨테이너를 시작하고 실행하세요.

모든 개념과 구현이 유사하기 때문에 Docker가 Linux 컨테이너(LXC)와 어떻게 다른지 궁금할 것입니다.

Docker는 원래 Linux 컨테이너를 기반으로 구축되었습니다. (LXC). 나중에 Docker는 LXC를 자체 런타임 컨테이너(현재 runc의 일부임)로 대체했습니다.

컨테이너 기술일 뿐만 아니라, Docker에는 애플리케이션 패키징을 더 쉽게 만드는 잘 정의된 패키징 구성 요소가 있습니다.. Docker 이전에는 컨테이너 관리가 쉽지 않았습니다. 즉, 모든 애플리케이션 시스템 요구 사항을 컨테이너에 패키징하여 인프라에서 애플리케이션을 분리하는 데 필요한 모든 작업을 수행합니다.

예를 들어 Java jar 파일이 있으면 Java가 설치된 모든 서버에서 실행할 수 있습니다. 같은 방법으로, Docker를 사용하여 필요한 애플리케이션으로 컨테이너를 패키징하면 다른 호스트에서 실행할 수 있습니다. Docker가 설치된 곳입니다.

도커와 컨테이너의 차이점

Docker는 컨테이너 구현을 효율적으로 관리하기 위해 개발된 기술 또는 도구입니다.

그렇다면 Docker 없이 컨테이너를 관리할 수 있나요? 예 ! 물론. LXC 기술을 사용하여 Linux 서버에서 컨테이너를 실행할 수 있습니다.

도커에 대해 알아야 할 모든 것

Docker는 널리 사용되는 컨테이너화 플랫폼입니다. 애플리케이션 개발 및 배포 관점에서 컨테이너와 마이크로서비스가 자주 사용된다는 점을 알아야 합니다. 이것이 바로 “클라우드 네이티브” 개발입니다. 따라서 Docker는 기업에서 매우 인기 있는 대안입니다. 다음에 액세스하고 싶다면 도커에 대한 완전한 가이드, 당사 파트너인 datascientest.com의 웹사이트로 이동하실 수 있습니다. 컨테이너는 경량 실행 환경이며 가상 머신의 기존 가상화 기술에 대한 대안입니다.

최신 소프트웨어를 성공적으로 개발하려면 동일한 호스트에 배포된 애플리케이션을 격리하여 간섭을 방지해야 합니다. 애플리케이션을 실행하려면 패키지가 필요합니다. 가상 머신은 동일한 시스템에서 애플리케이션을 서로 분리하고 소프트웨어 구성 요소 간의 충돌과 리소스 경쟁을 줄이는 데 사용됩니다. Docker는 안전하고 비용 효율적인 오픈 소스 솔루션입니다. Docker는 Linux 가상화 계층을 통해 Windows 또는 Mac에서 컨테이너를 실행하는 데에도 사용됩니다. 따라서 Docker에 대한 자세한 정보를 얻으려면 어디로 가야 하는지 알고 이 컨테이너화 플랫폼의 모든 내용을 이해할 수 있습니다.

최신 소프트웨어를 성공적으로 개발하려면 동일한 호스트에 배포된 애플리케이션을 격리하여 간섭을 방지해야 합니다. 애플리케이션을 실행하려면 패키지가 필요합니다. 가상 머신은 동일한 시스템에서 애플리케이션을 서로 분리하고 소프트웨어 구성 요소 간의 충돌과 리소스 경쟁을 줄이는 데 사용됩니다. Docker는 안전하고 비용 효율적인 오픈 소스 솔루션입니다. Docker는 Linux 가상화 계층을 통해 Windows 또는 Mac에서 컨테이너를 실행하는 데에도 사용됩니다. 따라서 Docker에 대한 자세한 정보를 얻으려면 어디로 가야 하는지 알고 이 컨테이너화 플랫폼의 모든 내용을 이해할 수 있습니다.

도커는 왜 그렇게 성공적인가?

Docker는 애플리케이션을 개발자의 노트북에서 테스트 환경으로, 그리고 프로덕션 환경으로 이동하기 위한 효율적인 워크플로우를 갖추고 있습니다. 애플리케이션을 Docker 이미지로 패키징하는 실제 예를 시청하여 자세히 알아보세요.

Docker 컨테이너를 시작하는 데 1초도 걸리지 않는다는 것을 알고 계셨나요?

믿을 수 없을 정도로 빠르며 호환되는 Linux 커널이 있는 모든 호스트에서 실행될 수 있습니다. (윈도우와도 호환됩니다)

메모 : Windows에 대한 Linux 커널 지원이 없기 때문에 Linux 호스트에서 Windows 컨테이너를 실행할 수 없습니다.. 여기에서 Windows 컨테이너에 대해 읽을 수 있습니다.

Docker는 이미지 저장을 위해 “기록 중 복사” 통합 파일 시스템을 사용합니다.. 컨테이너가 변경될 때마다 Copy-On-Write 모델을 사용하여 변경 사항만 디스크에 기록됩니다.

Copy-on-write 모델을 사용하면 모든 컨테이너에 대해 최적화된 공유 스토리지 레이어를 갖게 됩니다.