Docker 컨테이너는 Linux 커널 기술 네임스페이스를 통해 격리를 달성합니다. "Linux 네임스페이스" 메커니즘은 리소스 격리 솔루션을 제공합니다. 각 네임스페이스 아래의 리소스는 투명하고 다른 네임스페이스 아래의 리소스에 표시되지 않습니다. , 동일한 pid를 가진 여러 프로세스가 있습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.
Docker는 주로 Linux 커널 기술 네임스페이스를 사용하여 격리를 달성합니다. Linux 네임스페이스 메커니즘은 리소스 격리 솔루션을 제공합니다.
PID, IPC, 네트워크 및 기타 시스템 리소스는 더 이상 전역이 아니며 특정 네임스페이스에 속합니다. 각 네임스페이스 아래의 리소스는 투명하며 다른 네임스페이스 아래의 리소스에는 표시되지 않습니다. 따라서 운영 체제 수준에는 동일한 pid를 가진 여러 프로세스가 있습니다. 시스템에는 프로세스 번호 0, 1, 2를 가진 두 프로세스가 동시에 있을 수 있습니다. 두 프로세스는 서로 다른 네임스페이스에 속하므로 충돌이 없습니다. 사용자 수준에서는 사용자 자신의 네임스페이스에 속한 리소스만 볼 수 있습니다. 예를 들어 ps 명령을 사용하면 사용자 자신의 네임스페이스 아래에 있는 프로세스만 나열할 수 있습니다. 이렇게 하면 각 네임스페이스가 별도의 Linux 시스템처럼 보입니다.
예제는 다음과 같습니다. 프로세스 격리
컨테이너 시작
docker run -it -p 8080:8080 --name pai-sn pai-sn:snapshot /bin/bash
-it Interactive Startup, -p 포트 매핑, –name 컨테이너 이름 뒤에 이미지 이름이 오고, 셸을 엽니다. , 그리고 시작 후 컨테이너에 들어갑니다.
프로세스 보기
ps -ef
top 명령을 사용하여 프로세스 리소스 보기
호스트 머신에서 현재 실행 중인 컨테이너의 프로세스 보기 ps -ef|grep pai-sn
이를 통해 docker run 명령은 하나의 프로세스만 시작하고 해당 pid는 4677임을 알 수 있습니다. 컨테이너 프로그램 자체는 격리되어 있으며 컨테이너 내부에서는 자체 내부 프로세스만 볼 수 있습니다. Docker는 Linux 커널의 네임스페이스 기술을 사용하여 구현됩니다.
파일 격리
컨테이너 내부의 루트 디렉터리에서 ls 명령을 실행하세요
컨테이너에 이미 이러한 폴더가 포함되어 있습니다
호스트가 docker info를 실행하는 파일 시스템을 살펴보겠습니다. Docker. What
Docker 버전은 20.10.6이고 스토리지 드라이버는 overlay2입니다. 다양한 스토리지 드라이버가 Docker에서 다르게 작동하지만 원리는 비슷합니다.
Docker 파일 시스템은 마운트를 통해 마운트됩니다. docker ps 명령 인스턴스 id
를 실행하여 호스트 시스템에 마운트된 디렉터리를 찾고 디렉터리 목록을 확인하세요
이것이 컨테이너의 디렉터리와 일치한다는 것을 확인하고 이 디렉터리 아래에 새 디렉터리를 만든 다음 새 디렉터리가 컨테이너 내부에 나타나는지 확인합니다. 실제로 파일 격리와 리소스 격리는 모두 새 네임스페이스에 마운트를 통해 수행됩니다.
추천 학습: "docker 비디오 튜토리얼"
위 내용은 도커 컨테이너를 격리하는 격리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!