>운영 및 유지보수 >Docker >도커에서 포드는 무엇을 의미합니까?

도커에서 포드는 무엇을 의미합니까?

WBOY
WBOY원래의
2022-07-08 11:11:335817검색

Docker에서 Pod는 결합된 다중 컨테이너 실행 단위를 의미합니다. Pod는 Kubernetes의 기본 단위로, 컨테이너의 확장 또는 향상된 컨테이너로 간주될 수 있으며 "네임 스페이스" 시간에 여러 프로세스를 패키징합니다. 형성되며 포드 내 다양한 ​​프로세스의 애플리케이션 패키징은 여전히 ​​독립적입니다.

도커에서 포드는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.

Docker에서 Pod의 의미

Pod는 다중 컨테이너 실행 단위이자 Kubernetes의 기본 단위를 결합한 것입니다. 컨테이너의 확장 또는 향상된 컨테이너로 생각할 수 있습니다. 포드에는 기본 컨테이너와 여러 보조 컨테이너가 포함되어 있으며 함께 특정 기능을 완료합니다. 여러 프로세스(컨테이너도 격리된 프로세스임)가 네임스페이스에 패키징되면 포드가 형성됩니다. Pod에 있는 다양한 프로세스의 애플리케이션 패키징은 여전히 ​​독립적입니다(각 컨테이너는 자체 이미지를 갖습니다).

Pod의 의의는 메인 컨테이너의 독립성을 유지하면서 메인 컨테이너와 보조 컨테이너의 긴밀한 관계를 유지할 수 있다는 점입니다. 기본 컨테이너와 보조 컨테이너는 동일한 수명 주기를 가지며 동시에 생성 및 삭제될 수 있으므로 Pod에 배치하면 상호 작용이 더욱 효율적으로 이루어질 수 있습니다.

한편, 메인 컨테이너는 몇 가지 주요 작업을 완료해야 하며, 다른 작업은 공통적일 수 있으며 별도로 패키징하여 보조 컨테이너에서 실행할 수 있습니다.

지식 확장

컨테이너란 무엇인가요?

컨테이너를 보는 관점은 사람마다 다르기 때문에 컨테이너에 대한 정확한 정의를 내리기가 쉽지 않습니다. Liu Junhui의 관점에서 컨테이너는 컴퓨팅 장치를 제공하는 방법일 뿐만 아니라 애플리케이션을 위한 패키징 형태이기도 합니다.

- 컨테이너는 컴퓨팅 단위입니다.

컴퓨팅 단위로서 컨테이너는 스레드, 프로세스, 가상 머신 또는 물리적 머신과 동일합니다(아래 그림 참조). 연속체 규모에서 격리, 보안 및 오버헤드는 왼쪽으로 갈수록 낮고 오른쪽으로 갈수록 높아집니다. 컨테이너는 프로세스와 가상 머신 사이의 컴퓨팅 단위입니다.
도커에서 포드는 무엇을 의미합니까?
그러나 모든 애플리케이션이 컨테이너에 적합한 것은 아닙니다. 개발자는 자신의 애플리케이션의 특성과 요구 사항에 따라 가장 적합한 컴퓨팅 장치를 선택할 수 있습니다. 예를 들어, 애플리케이션이 고성능이고 상호 신뢰하며 동일한 관리 영역에 있으면 스레드나 프로세스로 충분하지만 애플리케이션이 다중 테넌트이고 다른 애플리케이션과 동일한 공간에서 실행되는 경우에는 다음이 필요합니다. 데이터가 유출되거나 성능에 영향을 미치지 않도록 이러한 애플리케이션을 안전하게 격리하는 방법을 고려하십시오. 이때는 컨테이너가 좋은 선택이 될 수 있습니다.

컨테이너는 "고도로 격리된 프로세스"이기 때문에 일반 프로세스의 격리를 기반으로 하는 새로운 격리 메커니즘을 추가합니다. 이러한 격리 메커니즘은 일부 네임스페이스(네임스페이스) 및 CGroup을 포함하여 Linux 커널에서 제공됩니다. 네임스페이스는 네트워크, 스토리지, 컴퓨팅이라는 세 가지 범주로 나눌 수 있습니다. 그 중에서 가장 중요한 것은 네트워크 네임스페이스이다. 이는 컨테이너의 네트워크가 다른 컨테이너 네트워크와 독립적임을 보장합니다. 각 컨테이너가 보는 파일 시스템은 다른 컨테이너와 공유되지 않습니다. 각 컨테이너는 자신의 프로세스 ID만 볼 수 있으며 프로세스 번호도 연속됩니다.

컨테이너와 가상 머신의 가장 큰 차이점에 대해 Liu Junhui는 가상 머신과 비교할 때 컨테이너의 가장 큰 특징은 자체 독립 운영 체제가 없지만 호스트에서 운영 체제를 공유한다는 점이라고 믿습니다. 가상 머신은 "별도의 서버"에서 실행됩니다. 따라서 컨테이너의 비용은 가상 머신의 비용보다 작지만 격리가 부족합니다.

- 컨테이너는 애플리케이션의 패키징 형태입니다.

애플리케이션 개발 경험이 있는 사람이라면 누구나 애플리케이션이 단일 실행 파일이 아니라는 것을 알고 있습니다. 약간 더 복잡한 애플리케이션에는 코드, 실행 파일, 구성 종속성, 외부 종속성(동적 링크 라이브러리) 등

따라서 배포 패키징을 적용할 때는 대상 운영 체제 버전, 시스템 아키텍처, 종속 모듈 등의 요소를 고려해야 합니다. 그렇지 않으면 응용 프로그램이 설치될 때 시스템의 다른 부분을 수정하게 됩니다.

애플리케이션을 위한 패키징으로서 가장 큰 특징은 애플리케이션의 독립성과 이식성을 실현한다는 것입니다. 컨테이너 자체에는 애플리케이션의 모든 종속성이 포함되어 있어 시스템 버전에 관계없이 모든 인프라에서 실행할 수 있습니다. 건축 문제는 다양한 사고로 이어집니다.

02도커란 무엇인가요?

간단히 말하면 Docker는 매우 성공적인 컨테이너 관리 플랫폼이라고 볼 수 있습니다. Docker의 가장 중요한 부분은 실행 중인 관리 환경입니다(아래 그림 참조).
도커에서 포드는 무엇을 의미합니까?
위에서 언급했듯이 컨테이너는 컴퓨팅 단위이며 Docker 운영 환경은 이러한 컴퓨팅 단위를 생성, 관리 및 파괴하는 데 사용됩니다. 이러한 컴퓨팅 장치를 생성하고 관리할 때는 컴퓨팅 장치의 패키징(즉, 해당 소프트웨어 배포 패키지)을 사용해야 합니다. 이러한 패키지는 컨테이너 이미지 형식으로 실행 환경에 저장됩니다. 이러한 이미지가 생성됩니다.

그러나 이미지 자체에는 Docker의 또 다른 중요한 구성 요소인 DockerHub와 관련된 버전 릴리스, 업그레이드 및 기타 요구 사항이 있습니다. DockerHub는 Apple의 App Store와 약간 비슷합니다. 매우 큰 "컨테이너 시장"이며 일반적으로 사용되는 모든 소프트웨어는 DockerHub에서 찾을 수 있습니다.

Docker의 마지막 중요한 모듈은 컨테이너의 실행 환경에 명령을 실행하거나 상태를 확인하는 데 사용되는 사용자 인터페이스와 관리 도구입니다. 컨테이너의 실행 상태를 생성, 삭제 및 확인하려면 Docker 명령을 사용하고 일부 매개변수를 추가하기만 하면 됩니다.

다음으로 Docker의 실제 동작을 살펴보겠습니다. Hello World 컨테이너 실행을 예로 들어 Docker의 사용법을 살펴보겠습니다. 실제로 Docker를 설치하기만 하면 이 Hello World 컨테이너를 실행해 볼 수 있습니다.

다음 코드를 통해 Docker가 수행한 작업을 살펴보겠습니다.
도커에서 포드는 무엇을 의미합니까?
먼저 Docker가 최신 버전의 Hello World 이미지를 로컬에서 찾고 있는 것을 확인하고 이 이미지가 로컬에 존재하지 않음을 확인합니다. DockerHub에서 이 이미지를 업로드했습니다. 그런 다음 이미지가 실행되고 Docker가 백그라운드에서 이러한 컨테이너를 생성합니다.

Docker의 등장으로 컨테이너 애플리케이션 관리가 매우 쉬워졌습니다. 컨테이너 실행에는 명령 하나만 필요합니다. DockerHub에서 이미지 다운로드, 다양한 격리 환경 생성, 컨테이너 및 외부 네트워크 통신 환경 생성은 모두 Docker로 완료할 수 있습니다. Docker는 컨테이너의 전체 수명주기를 관리할 수 있다고 할 수 있습니다.

03 컨테이너 vs. 가상 머신, 벌목꾼의 도끼와 톱

컨테이너를 요약하면 컨테이너의 가장 큰 특징은 가볍고 완전히 독립적인 배포라고 요약할 수 있습니다. 이 두 가지 특성은 클라우드 네이티브의 탄력적인 무제한 확장 및 온디맨드 사용 포지셔닝과 매우 일치합니다. 이로 인해 컨테이너는 클라우드 네이티브의 초석이 되었습니다.

컨테이너와 가상 머신은 모두 컴퓨팅 단위이지만 가상 머신에서 컨테이너로의 전환은 단순한 성능 개선이나 아키텍처 변경이 아니라 애플리케이션 철학의 변화로 볼 수 있습니다.

예를 들어, 벌목꾼들은 책을 읽을 때 도끼를 사용하곤 했습니다. 나중에는 모두가 도끼를 사용하는 것이 너무 힘들다고 느꼈기 때문에 전문가가 나무를 자르는 또 다른 도구인 톱을 소개했습니다. 그러나 벌목꾼이 나무를 자르려고 톱을 사용한다면 사용하기 쉬운 도끼가 없다는 것을 알게 될 것입니다. 그러나 사실은 도끼와 톱이 두 가지 개념으로 사용된다는 것입니다.

컨테이너와 가상머신의 개념 차이에 대해 말하자면, 아래 차트를 통해 더욱 실감할 수 있습니다.
도커에서 포드는 무엇을 의미합니까?
컨테이너의 일반적인 애플리케이션은 두 가지 범주로 나눌 수 있습니다. 하나는 마이크로서비스이고 다른 하나는 DevOps입니다.

마이크로서비스는 시스템의 서로 다른 단위나 기능이 서로 다른 컨테이너를 실행한다는 것을 의미합니다. 각 서비스의 컨테이너 수는 자체 로드에 따라 조정될 수 있습니다. 예를 들어, 대규모 시스템에는 사용자 로그인, 제품 표시, 제품 상호 작용 등의 기능이 포함되어 있지만 시스템의 모든 부분이 동시에 선형적으로 증가하지 않으며 일부 부분은 더 붐비고 일부 부분은 용량이 초과될 수 있습니다.
도커에서 포드는 무엇을 의미합니까?
DevOps는 간소화된 개발, 테스트 및 생산 프로세스를 의미합니다. 컨테이너의 "자체 포함" 기능으로 인해 표준 순환 항목으로 사용되는 경우 개발 환경, 테스트 환경 및 프로덕션 환경의 애플리케이션 패키징이 완전히 일관될 수 있습니다. 이를 통해 애플리케이션 종속성 구성 오류로 인한 사고가 줄어듭니다. 등을 통해 개발, 테스트, 생산의 전체 파이프라인이 더욱 효율적이 됩니다.
도커에서 포드는 무엇을 의미합니까?

04 향상된 컨테이너 Pod

Pod는 다중 컨테이너 실행 단위이자 Kubernetes의 기본 단위입니다. 컨테이너의 확장 또는 향상된 컨테이너로 생각할 수 있습니다. 포드에는 기본 컨테이너와 여러 보조 컨테이너가 포함되어 있으며 함께 특정 기능을 완료합니다. 여러 프로세스(컨테이너도 격리된 프로세스임)가 네임스페이스에 패키징되면 포드가 형성됩니다. Pod에 있는 다양한 프로세스의 애플리케이션 패키징은 여전히 ​​독립적입니다(각 컨테이너에는 자체 이미지가 있습니다).

Pod의 의의는 메인 컨테이너의 독립성을 유지하면서 메인 컨테이너와 보조 컨테이너의 긴밀한 관계를 유지할 수 있다는 점입니다. 기본 컨테이너와 보조 컨테이너는 동일한 수명 주기를 가지며 동시에 생성 및 삭제될 수 있으므로 Pod에 배치하면 상호 작용이 더욱 효율적으로 이루어질 수 있습니다.

한편, 메인 컨테이너는 몇 가지 주요 작업을 완료해야 하며, 다른 작업은 공통적일 수 있으며 별도로 패키징하여 보조 컨테이너에서 실행할 수 있습니다.

Katacoda라는 웹사이트를 방문해 보시기를 적극 권장합니다. 여기에는 Docker 및 Docker Image와 같은 실습 프로젝트를 포함하여 수많은 무료 온라인 실험이 있으며 현재 완전히 무료입니다. 여기로 가서 손을 더럽힐 수도 있습니다.

컨테이너 플랫폼이 여러 테넌트 애플리케이션을 실행하는 경우 "측면 공격"이 발생하기 쉽습니다. 즉, 프로세스는 시스템 취약성을 사용하여 자체 권한을 관리자로 업그레이드하는 등 권한을 에스컬레이션하여 실행 중인 시스템에 대한 액세스 권한을 얻습니다. 다른 프로세스나 컨테이너의 작업 권한. 현재 이러한 취약점은 일반적으로 "마이닝"을 위해 컴퓨팅 리소스를 악의적으로 사용하는 것으로 이어집니다.

이 문제를 해결하기 위해 현재 두 가지 솔루션이 있습니다. 하나는 "시스템 호출 제한"이고 다른 하나는 "독립 커널"입니다.

시스템 호출 제한이란 애플리케이션의 시스템 호출을 제한하여 다른 애플리케이션에 해를 끼치지 않도록 하여 애플리케이션의 기능을 줄이는 것을 의미합니다. 현재 Google의 Givsor와 IBM의 Nabla가 모두 이 접근 방식을 채택하고 있습니다. 아래 그림과 같이 애플리케이션은 원래 모든 시스템 콜에 접근하지만 Nabla 모드에서는 애플리케이션이 꼭 필요한 시스템 콜에만 접근하고 나머지 호출은 차단한다.
도커에서 포드는 무엇을 의미합니까?
하지만 이 방법의 단점은 처음에 애플리케이션에 "적절한" 권한을 부여해야 한다는 것입니다. 실수로 충분한 권한을 부여하지 않으면 애플리케이션이 중단될 수 있습니다.

독립 커널은 컨테이너에 새로운 커널을 추가하는 것을 의미하며, "마이크로커널"과 유니커널이라는 두 가지 구현 방법을 포함합니다. 유니커널과 애플리케이션은 함께 컴파일되며, 시스템 호출 없이 함수를 통해 직접 호출할 수 있습니다.

이 솔루션의 장점은 컨테이너가 본질적으로 자체 커널만 처리하는 반면 커널은 호스트를 처리한다는 것입니다. 커널과 호스트 간의 상호 작용에는 몇 가지 공통 지침만 필요하며 시스템에 해를 끼치는 직접적인 호출이 포함되지 않습니다. 지침. 현재 Kata Container와 JD.com Cloud 네이티브 컨테이너는 이 방법을 사용합니다.

이 접근 방식의 이점은 최소 운영 체제로서 마이크로커널이 불필요한 시스템 작동 부분을 제거하면서 모든 시스템 호출을 충족할 수 있다는 것입니다. 시스템 시작 시간이 매우 짧아서 두 번째 수준에 도달합니다. 오버헤드는 가상 머신보다 작습니다.

추천 학습: "docker 비디오 튜토리얼"

위 내용은 도커에서 포드는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.