chroot와 Docker의 차이점


15

도커와 chroot의 차이점을 이해하지 못합니다. 그렇습니다. 레지스트리 포장 측면에서 좋습니다. 그러나 어떻게 든 나는 여분의 종과 휘파람으로 그저 근본을 느끼게됩니다.

뭔가 빠졌음을 알고 있습니다. chroot가 비슷한 것을 할 수 있다면 그것들이 어떻게 다르고도 커가 필요한지 아는 것이 좋을 것입니다.

Chroot Vs Docker도 충분히 명확하지 않았습니다.


글쎄, Docker는 커널이 아직 당신을 위해하지 않은 일을하지 않습니다. 단지 일관성 있고 사용하기 쉬운 도구로 패키지합니다. chroot, 네임 스페이스, 할당량, NAT 및 나머지 모든 작업을 수행하는 데 방해가된다면 자체 Docker를 만들 수 있습니다.
Gaius

답변:


8

여분의 종소리와 휘파람을 프로세스 격리라고합니다. 컨테이너는 호스트 커널에서 자체 네임 스페이스 를 가져 옵니다. 즉 컨테이너의 프로그램은 커널 메모리를 읽거나 허용 된 것보다 많은 RAM을 먹을 수 없습니다.

또한 네트워크 스택을 격리하므로 두 프로세스가 포트 8080에서 수신 대기 할 수 있습니다. 호스트 수준에서 라우팅을 처리해야합니다. 여기에는 마법이 없지만 한 곳에서 라우팅을 처리하고 프로세스 구성을 수정하지 않아도됩니다. 빈 포트를 듣습니다.

둘째, chroot는 여전히 읽기 / 쓰기이고, 변경은 영구적이며, 컨테이너를 aufs시작할 때마다 깨끗한 파일 시스템에서 사용하는 docker 컨테이너 가 시작됩니다 (IIRC를 중지 / 시작하면 변경 사항이 유지됨).

따라서 컨테이너는 process namespace+ 로 생각 될 수 있지만 chroot현실은 조금 더 복잡합니다.


참고 aufs더 이상 기본적으로 사용되지 않습니다. 지금overlay2
Vitalii Vitrenko

사실, 지금은 overlay2보다 aufs를 참조하는 교육 자료가 더 많다고 생각합니다. :)
Tensibai

정상적인 프로세스는 의도하지 않은 메모리를 읽을 수 없습니다. 보안을 위해 Docker에 의존한다면 잘못하고 있습니다 ...
Gaius

@Gaius 당신이 저를 잘못 읽고 있습니다. OP에 검색 힌트를 주려고합니다 ... 배달 파이프 라인에 도커를 추가하는 것은 개발자가 내부에서 사용하는 것에 자유를 부여하는 것이 절대 보안 포인트가 아닙니다. 그럼에도 불구하고 네임 스페이스는 본질적으로 스택 오버 플로우 및 버퍼 오버 플로우로부터 보호합니다.
Tensibai

5

그렇습니다 chroot. 공통점이 거의 없다는 점 보다 더 많은 것이 있습니다.

  • 작업과 관련된 의미를 포함하는 표준화 된 스크립트 파일 형식
  • 강력한 관리를 포함한 이미지 (이미지 간 익명의 포함), 캐싱, 이름 지정, 다운로드 등 ( docker image prune...)
  • 컨테이너 (자체 임시 파일 시스템 포함, 이름 지정, 액세스 가능 docker exec등)
  • 공정 관리 ( docker container ...)
  • 도커 컨테이너 간 네트워킹 등 간단한 옵션으로 네트워킹
  • 볼륨 (특수 관리 볼륨 포함)
  • docker-compose 로우 프로파일 업그레이드로 더 많이 업그레이드하십시오.
  • 도커 컨테이너 (OpenShift 등)를 기반으로하는 다른 솔루션의 대규모 동물원.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.