찾다
운영 및 유지보수DockerDocker의 두 가지 핵심 기술은 무엇입니까?

두 가지 핵심 기술: 1. 전역 시스템 리소스를 일종의 캡슐화 및 격리하여 서로 다른 네임스페이스의 프로세스가 독립적인 전역 시스템 리소스를 갖도록 하는 "Linux 네임스페이스" 2. 호스트를 격리할 수 있는 "제어 그룹" 리소스 할당량 및 측정을 구현하기 위한 머신 물리적 리소스입니다.

Docker의 두 가지 핵심 기술은 무엇입니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

Docker는 Go 언어 기반의 클라우드 오픈소스 프로젝트입니다.

Docker는 가상화 기술을 통해 개발 환경, 테스트 환경 및 생산 환경 간의 일관성 문제를 해결하여 앱과 실행 환경이 "어디서나 모든 앱을 구축, 배송 및 실행"이라는 목적을 달성할 수 있도록 합니다. 지속적인 통합을 촉진하고 전반적인 릴리스 및 확장을 촉진하는 컨테이너 가상화 기술입니다.

Docker의 두 가지 핵심 기술: 네임스페이스와 컨트롤러 그룹.

1. 격리: Linux 네임스페이스(ns)

Linux 네임스페이스는 일종의 글로벌 시스템 리소스를 캡슐화하고 격리하므로 서로 다른 네임스페이스의 프로세스가 독립적인 글로벌 시스템 리소스를 가지므로 시스템 리소스를 변경하는 경우에만 현재 네임스페이스의 프로세스에 영향을 미치고 다른 네임스페이스의 프로세스에는 영향을 미치지 않습니다. 이러한 리소스에는 프로세스 트리, 네트워크 인터페이스, 마운트 지점, 프로세스 간 통신 및 기타 리소스가 포함됩니다. 동일한 네임스페이스에 있는 프로세스는 서로의 변경 사항을 인식할 수 있으며 외부 프로세스에 대해서는 아무것도 알 수 없습니다. 이는 컨테이너의 프로세스가 독립적인 시스템에 있는 것처럼 보이게 하여 격리 목적을 달성할 수 있습니다.

각 사용자 인스턴스는 서로 격리되어 있으며 서로 영향을 주지 않습니다. 일반적인 하드웨어 가상화 방식이 주는 방식은 VM이고, LXC에서 주는 방식은 컨테이너, 좀 더 구체적으로 말하면 커널 네임스페이스이다. 그 중 pid, net, ipc, mnt, uts, user 및 기타 네임스페이스에는 컨테이너의 프로세스, 네트워크, 메시지, 파일 시스템, UTS("UNIX 시간 공유 시스템")가 포함됩니다. ") 및 사용자 공간은 격리됩니다.

1), pid 네임스페이스

서로 다른 사용자의 프로세스는 pid 네임스페이스를 통해 격리되며, 서로 다른 네임스페이스는 동일한 pid를 가질 수 있습니다. docker에 있는 모든 LXC 프로세스의 상위 프로세스는 docker 프로세스이며, 각 lxc 프로세스는 서로 다른 네임스페이스를 갖습니다. 동시에 중첩이 허용되므로 Docker 내의 Docker를 쉽게 구현할 수 있습니다.

2), net 네임스페이스

pid 네임스페이스를 사용하면 각 네임스페이스의 pid를 서로 격리할 수 있지만 네트워크 포트는 여전히 호스트 포트를 공유합니다. 네트워크 격리는 net 네임스페이스를 통해 이루어집니다. 각 net 네임스페이스에는 독립적인 네트워크 장치, IP 주소, IP 라우팅 테이블 및 /proc/net 디렉터리가 있습니다. 이러한 방식으로 각 컨테이너의 네트워크를 격리할 수 있습니다. 기본적으로 docker는 veth를 사용하여 컨테이너의 가상 네트워크 카드를 호스트의 docker 브리지인 docker0에 연결합니다.

3) ipc 네임스페이스

컨테이너의 프로세스 상호 작용은 공통 세마포어, 메시지 대기열 및 공유 메모리를 포함하여 여전히 일반적인 Linux 프로세스 간 상호 작용 방법(프로세스 간 통신 - IPC)을 사용합니다. 그러나 VM과 달리 컨테이너의 프로세스 간 상호 작용은 실제로 호스트의 동일한 pid 네임스페이스와의 프로세스 간 상호 작용이므로 IPC 리소스를 신청할 때 네임스페이스 정보를 추가해야 합니다. 각 IPC 리소스에는 고유한 32 -비트 ID.

4) mnt 네임스페이스

는 chroot와 유사하며 실행을 위해 특정 디렉터리에 프로세스를 배치합니다. mnt 네임스페이스를 사용하면 서로 다른 네임스페이스의 프로세스가 서로 다른 파일 구조를 볼 수 있으므로 각 네임스페이스의 프로세스가 보는 파일 디렉터리가 격리됩니다. chroot와 달리 각 네임스페이스에 있는 컨테이너의 /proc/mounts에 있는 정보에는 네임스페이스의 마운트 지점만 포함됩니다.

5), uts 네임스페이스

UTS("UNIX Time-sharing System") 네임스페이스를 사용하면 각 컨테이너가 독립적인 호스트 이름과 도메인 이름을 가질 수 있으므로 네트워크에서 컨테이너가 아닌 독립적인 노드로 간주될 수 있습니다. 프로세스를 호스팅합니다.

6), 사용자 네임스페이스

각 컨테이너는 서로 다른 사용자 및 그룹 ID를 가질 수 있습니다. 즉, 호스트의 사용자 대신 컨테이너 내부의 사용자를 사용하여 프로그램을 실행할 수 있습니다.

2. 리소스 제한: 제어 그룹(cgroups)

네임스페이스는 새로 생성된 프로세스에 대해 파일 시스템, 네트워크 및 프로세스를 호스트 시스템에서 격리하지만 네임스페이스는 이를 수행할 수 없습니다. 격리. 그러나 서로와 호스트 시스템에 대해 전혀 모르는 동일한 시스템에서 여러 컨테이너를 실행하는 경우 이러한 컨테이너는 호스트 시스템의 물리적 리소스를 공동으로 점유합니다.

제어 그룹(줄여서 CGroup)은 CPU, 메모리, 디스크 I/O, 네트워크 대역폭과 같은 호스트 시스템의 물리적 리소스를 격리할 수 있습니다. 각 CGroup은 동일한 표준과 매개변수로 제한되는 프로세스 그룹입니다. 서로 다른 CGroup 간에는 계층적 관계가 있습니다. 즉, 상위 클래스에서 리소스 사용을 제한하기 위한 일부 표준과 매개변수를 상속받을 수 있습니다.

cgroups는 할당량 및 리소스 측정을 구현합니다. cgroups의 사용은 매우 간단합니다. 파일과 유사한 인터페이스를 제공합니다. /cgroup 디렉터리에 새 폴더를 생성하고 이 폴더에 새 작업 파일을 작성하여 프로세스를 실현합니다. . 자원 제어. 그룹은 blkio, cpu, cpuacct, cpuset, devices, Freezer, memory, net_cls 및 ns의 9개 하위 시스템의 리소스를 제한할 수 있습니다. 다음은 각 하위 시스템에 대한 자세한 설명입니다.

  • blkio 이 하위 시스템 설정은 각 블록 장치를 제한합니다. 입출력 제어. 예: 디스크, CD, USB 등

  • cpu 이 하위 시스템은 스케줄러를 사용하여 cgroup 작업에 CPU 액세스를 제공합니다.

  • cpuacct는 cgroup 작업에 대한 CPU 리소스 보고서를 생성합니다.

  • cpuset 멀티 코어 CPU인 경우 이 하위 시스템은 cgroup 작업에 별도의 CPU와 메모리를 할당합니다.

  • devices cgroup 작업을 통해 장치에 대한 액세스를 허용하거나 거부합니다.

  • freezer는 cgroup 작업을 일시 중지했다가 다시 시작합니다.

  • memory는 각 cgroup의 메모리 제한을 설정하고 메모리 리소스 보고서를 생성합니다.

  • net_cls는 cgroup 편의를 위해 각 네트워크 패킷에 태그를 지정합니다.

  • ns 네임스페이스 하위 시스템.

위의 9개 하위 시스템 간에도 특정 관계가 있습니다. 자세한 내용은 공식 문서를 참조하세요.

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

위 내용은 Docker의 두 가지 핵심 기술은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Docker를 사용하는 이유는 무엇입니까? 혜택과 장점이 설명되었습니다Docker를 사용하는 이유는 무엇입니까? 혜택과 장점이 설명되었습니다Apr 25, 2025 am 12:05 AM

Docker를 사용하는 이유는 응용 프로그램을 패키지, 배포 및 실행할 수있는 효율적이고 휴대용이며 일관된 환경을 제공하기 때문입니다. 1) Docker는 개발자가 애플리케이션과 의존성을 경량의 휴대용 컨테이너로 패키지 할 수있는 컨테이너화 된 플랫폼입니다. 2) 빠른 시작과 효율적인 작동을 보장하기 위해 Linux 컨테이너 기술 및 공동 파일 시스템을 기반으로합니다. 3) Docker는 다단장 구성을 지원하고 이미지 크기 및 배포 속도를 최적화합니다. 4) Docker를 사용하면 개발 및 배포 프로세스를 단순화하고 효율성을 향상 시키며 환경 간 일관성을 보장 할 수 있습니다.

Docker in Action : 실제 예제 및 사용 사례Docker in Action : 실제 예제 및 사용 사례Apr 24, 2025 am 12:10 AM

실제 프로젝트에서 Docker의 애플리케이션 시나리오에는 배포 단순화, 멀티 컨테이너 응용 프로그램 관리 및 성능 최적화가 포함됩니다. 1. Docker는 DockerFile을 사용하여 Node.js 응용 프로그램을 배포하는 것과 같은 응용 프로그램 배포를 단순화합니다. 2. DockerCompose는 마이크로 서비스 아키텍처에서 웹 및 데이터베이스 서비스와 같은 멀티 컨테이너 응용 프로그램을 관리합니다. 3. 성능 최적화는 다단계 구성을 사용하여 이미지 크기를 줄이고 건강 검진을 통해 컨테이너 상태를 모니터링합니다.

Docker vs. Kubernetes : 사용 사례 및 시나리오Docker vs. Kubernetes : 사용 사례 및 시나리오Apr 23, 2025 am 12:11 AM

소규모 프로젝트 또는 개발 환경에서 Docker를 선택하고 대규모 프로젝트 또는 생산 환경에서 Kubernetes를 선택하십시오. 1. Docker는 빠른 반복 및 테스트에 적합합니다. 2. Kubernetes는 강력한 컨테이너 오케스트레이션 기능을 제공하여 대규모 응용 프로그램을 관리하고 확장하는 데 적합합니다.

Linux의 Docker : Linux 시스템 용 컨테이너화Linux의 Docker : Linux 시스템 용 컨테이너화Apr 22, 2025 am 12:03 AM

Linux는 풍부한 도구와 커뮤니티 지원을 제공하는 기본 플랫폼이기 때문에 Docker는 Linux에서 중요합니다. 1. Docker 설치 : Sudoapt-Getupdate 및 Sudoapt-GetInstalldocker-Cedocker-Ce-clicotainerd.io를 사용하십시오. 2. 컨테이너 생성 및 관리 : Dockerrun-D-Namemynginx-P80 : 80nginx와 같은 Dockerrun 명령을 사용하십시오. 3. Dockerfile 쓰기 : 이미지 크기를 최적화하고 다단계 구성을 사용하십시오. 4. 최적화 및 디버깅 : DockerLogs 및 Dockerex를 사용하십시오

Docker : 컨테이너화 도구, Kubernetes : 오케스트레이터Docker : 컨테이너화 도구, Kubernetes : 오케스트레이터Apr 21, 2025 am 12:01 AM

Docker는 컨테이너화 도구이며 Kubernetes는 컨테이너 오케스트레이션 도구입니다. 1. Docker는 응용 프로그램과 그 종속성을 Docker 지원 환경에서 실행할 수있는 컨테이너로 패키지합니다. 2. Kubernetes는 이러한 컨테이너를 관리하고 자동 배포, 스케일링 및 관리를 구현하고 응용 프로그램을 효율적으로 실행합니다.

Docker의 목적 : 응용 프로그램 배포를 단순화합니다Docker의 목적 : 응용 프로그램 배포를 단순화합니다Apr 20, 2025 am 12:09 AM

Docker의 목적은 애플리케이션 배포를 단순화하고 컨테이너화 기술을 통해 다른 환경에서 응용 프로그램이 지속적으로 실행되도록하는 것입니다. 1) Docker는 응용 프로그램 및 컨테이너로 의존성을 포장하여 환경 차이 문제를 해결합니다. 2) DockerFile을 사용하여 이미지를 작성하여 응용 프로그램이 어디서나 일관되게 실행되도록하십시오. 3) Docker의 작업 원칙은 이미지와 컨테이너를 기반으로하며 Linux 커널의 네임 스페이스 및 제어 그룹을 사용하여 격리 및 자원 관리를 달성합니다. 4) 기본 사용에는 DockerHub에서 이미지를 당기고 실행하는 것이 포함되며, 고급 사용법에는 DockerCompose를 사용하는 다중 컨테이너 응용 프로그램을 관리하는 것이 포함됩니다. 5) 이미지 빌딩 실패 및 컨테이너 실패와 같은 일반적인 오류가 시작되지 않으면 로그 및 네트워크 구성을 통해 디버깅 할 수 있습니다. 6) 성능 최적화 구성

Linux 및 Docker : 다른 Linux 배포판의 DockerLinux 및 Docker : 다른 Linux 배포판의 DockerApr 19, 2025 am 12:10 AM

Ubuntu, Centos 및 Debian에 Docker를 설치하고 사용하는 방법은 다릅니다. 1) Ubuntu : APT 패키지 관리자를 사용하여 명령은 sudoapt-getupdate && sudoapt-getinstalldocker.io입니다. 2) Centos : Yum 패키지 관리자를 사용하면 Docker 저장소를 추가해야합니다. 이 명령은 SudoyuminStall-Yyum-utils && sudoyum-config-manager--add-repohttps : //download.docker.com/lin입니다

Docker 마스터 링 : Linux 사용자를위한 안내서Docker 마스터 링 : Linux 사용자를위한 안내서Apr 18, 2025 am 12:08 AM

Linux에서 Docker를 사용하면 개발 효율성을 향상시키고 응용 프로그램 배포를 단순화 할 수 있습니다. 1) Ubuntu 이미지를 당기기 : Dockerpullubuntu. 2) 우분투 컨테이너 실행 : Dockerrun-itubuntu/bin/bash. 3) nginx를 포함하는 dockerfile : fromubuntu; runapt-getupdate && apt-getinstall-ynginx; Expose80을 만듭니다. 4) 이미지를 빌드 : DockerBuild-tmy-nginx. 5) 컨테이너 실행 : Dockerrun-D-P8080 : 80

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기