문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 전산용어]] == 개요 == 컴퓨터 프로그램, [[컴퓨터 시스템]]에서 shim이란, 특정 API에 대한 요청을 [[transparent]]하게 intercept해서 실행시키는 [[라이브러리]]를 의미한다. Shim은 오래된 API에 대한 지원이나, 새로운 API를 오래된 Application에서 사용하기 위해서 사용된다. 예를 들어서,[[LD_PRELOAD]]는 libc라이브러리와 같은 Shared library에 대한 API를 중간에서 가로채서 새로운 API에 제공한다. 이를 통해서 LD_PRELOAD를 통해서 Loading되는 Application은 Binary patch없어도, 새로운 API를 사용할 수 있다. Docker에서 shim을 통해서, runC (Docker container을 생성하는 프로그램)에 대한 API요청을 contained-shim이 가로채서, containerd는 containerd-shim을 통해서 runC를 호출하고, containerd-shim은 생성된 Container을 계속해서 관리시킬 수 있도록 하였다. Shim은 [[Level of indirection]]의 한 예시로 볼수 있다. Libc <- LD_PRELOAD -> Application나, runC <- Containerd-shim -> Containerd처럼 중간 레이어에 해당하는 새로운 API재정의 라이브러리를 통해서, Shim을 사용할 수 있도록 하는 것이다. (직접 접근이 아니라 새로운 계층을 통해서 접근) Shim 문서로 돌아갑니다.