도커보단 CRI-O

Kim Jio·2022년 12월 2일
0

문제점

도커는 Docker-Cli와 Docker-Server로 나누어 구성되는데
이 중 Docker-Server의 기능이 너무 많아 단일 실패점이 되면 모든 기능이 마비 될 수 있는 위험이 큽니다.

Docker-Server(Demon) 의 기능
컨테이너 이미지 빌드, 관리, 공유, 실행 및 컨테이너 인스턴스 관리

모든 컨테이너를 자식 프로세스로 소유하기 때문에
Audit.log 같이 어떤 사용자가 어떤 행위를 하였는지 기록 되는 보안 log를 사용하지 못하는 등의 취약점이 있습니다.

또 Docker 명령어는 root 권한이 있어야만 실행 가능하기 때문에 일반 사용자에게 많은 권한을 부여해야하는 보안 취약점 이 있을 수 있습니다.

해결책

CRI-O (Container Runtime Interface - Open Container Initiative)

쿠버네티스는 1.24 버전 부터 Docker 런타임을 제거하였고
OCI에 맞는 런타임만 사용가능하게 정책을 변경하였습니다.
이에 CRI-O라는 컨테이너 런타임이 등장하였습니다.

CRI-O는 런타임으로 컨테이너 실행만 가능하기 때문에
이미지 빌드 , CLI, 레지스트리 기능들이 없습니다.

CRI-O와 함께 쓸 추가 Tool

PodMan : docker cli와 비슷한 역할을 수행하는 tool로

container생성, 유지 및 관리 도구입니다.

docker와는 다르게 각 container들을 fork/exec 방식으로 실행해서 별도로 구동하기 때문에

daemon 형태로 실행되지 않는 daemon-less 형태로 실행됩니다.

또한 kubernetes 와의 높은 호환성이 장점이고 Root 권한을 요구하지 않습니다.

containerd와 같이 실제 container를 생성하는건 runC(저수준 컨테이너 런타임) 를 통해서 진행함.

Buildah : OCI 이미지를 생성하는 도구로
docker build를 대체하여 CRI-O 환경에서 container image를 build할 때 사용됩니다.

Dockerfile을 활용한 build도 가능하고
다른 형식의 file로도 빌드가 가능합니다.

Buildah로 build 된 image는 OCI를 준수하고 있기 때문에 podman 또는 docker에서 사용 가능합니다.

Skopeo :
Skopeo는 docker의 Docker Content Trust (DCT) - 서명되지 않은 이미지만 pull 받을 수 있는 기능

image registry에 대해서 다양한 작업을 진행 할 수 있음.

registry에 있는 image 검사, 인증 등을 진행함.

기존 docker에서 image를 docker registry에 push하기 위해서는 pull, tag, push 등의 명령어를 사용해야 했다면

Skopeo는 간단하게 copy 명령으로 간단하게 push할 수 있습니다.

Skopeo는 OCI image를 저장할 수 있는 모든 image resistry에서 image를 검사할 수 있는 기능이 있습니다.

profile
what's important is an unbreakable heart

0개의 댓글