CRI-O 와 함께 사용되는 tool
CRI-O의 경우는 오로지 container를 실행하는 역할을 담당하고 있음.
docker와 비교하자면 docker구조에 포함되어있는 containerd와 동일한 역할을 수행함.
즉 CRI-O는 container 실행만 담당하지 이외의 기능인 image build, cli, image registry 생성 등과 같은 부가적은 기능은 수행하지 못함.
kubernetes의 CRI로 연동되기 위해서는 충분한 조건을 가지고 있어서
CRI-O만 설치하면 kubernetes는 문제없이 사용할 수 있음.
하지만 docker를 사용했을 때 처럼 image build 등과 같은 부가 기능을 사용하고 싶다면
이를 가능하게 하도록 CRI-O와 함께 사용할 수 있는 Tool로 Buildah, Podman, Skopeo이 존재함.
아래에서는 CRI-O와 함께 사용 가능한 Buildah, Podman, Skopeo 에 대해 알아봄.
Podman (포드맨)
docker cli와 비슷한 역할을 수행하는 tool로
container생성, 유지 및 관리 도구임.
docker와는 다르게 각 container들을 fork/exec 방식으로 싱행해서 별도로 구동하기 때문에
daemon 형태로 실행되지 않는 daemon-less 형태로 실행되고
root권한을 요구하지 않음.
또한 kubernetes 와의 높은 호환성을 자랑함.
containerd와 같이 실제 container를 생성하는건 runC를 통해서 진행함.
CentOS 8/Ubuntu 20.10 에서는 default로 제공되는 tool임.
(CentOS 7까지는 default로 제공되는 tool이 docker였는데 8부터 podman으로 대체됨.)
Podman 설치
CentOS 8/Ubuntu 20.10 에서는 default로 제공되는 tool이기 때문에
version만 상관 없다면 default제공되는 podman으로 이용이 가능.
하지만 특정 version을 받고 싶다면 version을 명시하고 yum 또는 apt로 설치함.
본 예제 환경은 CentOS7임으로 CentOS7을 환경으로 진행함.
CentOS7환경은 별도로 repo를 등록해줘야함.
(상위 CRI-O 설치를 위해 등록했던 repo와 동일하긴 함)
[yum repo 등록]
curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo
[설치 가능 podman version확인]
yum list podman --showduplicates | sort -r
3.0.1-2.el7.3.1 version으로 설치 진행
[yum podman 설치]
yum install podman
[설치 확인]
podman version
Podman 명령어
podman 명령어는 docker cli 명령어와 매우 유사함으로 대략적인 것만 보여주고 넘어가겠음...
podman을 통해 container 생성, 시작, 중지, 삭제, exec 접속 등 기능을 사용할 수 있음.
[image pull ]
podman pull [image name]
[image list 조회]
podman images
[실행되고 있는 container 목록 확인]
podman ps
[container process 확인]
podman ps -a
[podman build]
podman build -t [생성할 image name] .
podman으로도도 build명령을 통해 DockerFile 빌드를 사용할 수 있음.
podman build를 사용하는 경우 내부적으로 Buildah를 이용하여 container image를 build함.
Buildah는 다음 목차에서 알아봄.
Buildah (빌다)
Buildah는 OCI 이미지를 생성하는 도구로
docker build를 대체하여 CRI-O 환경에서 container image를 build할 때 사용됨.
Dockerfiles를 활용한 build도 가능하고
또 다른 형식의 파일로도 컨테이너 build도 가능함.
Buildah로 build 된 image는 OCI를 준수하고 있기 때문에 podman또는 docker에서 사용 가능함.
Buildah 설치
[설치 가능 Buildah version확인]
yum list Buildah --showduplicates | sort -r
[yum Buildah 설치]
yum install buildah
[설치 확인]
Buildah 명령어
Buildah 명령어 또한 docker build 명령어와 거의 똑같음.
[build용 Dockerfile 생성]
FROM docker.io/ubuntu
ENTRYPOINT echo "Builah build test"
[container image build]
[build image확인]
생성한 buildahtest image를 확인할 수 있음.
[yum Buildah 설치]
yum install skopeo -y
Skopeo (스코피오)
Skopeo는 docker의 Docker Content Trust (DCT) 기능을 대체할 수 있음.
image registry에 대해서 다양한 작업을 진행 할 수 있음.
registry에 있는 image 검사, 인증 등을 진행함.
기존 docker에서 image를 docker registry에 push하기 위해서는 pull, tag, push등 좀 번거로운 과정을 거쳤다면
Skopeo는 간단하게 copy 명령으로 간단하게 push할 수 있음.
Skopeo는 OCI image를 저장할 수 있는 모든 image resistry에서
image를 검사할 수 있음.
image를 한 위치에서 다른 위치로 복사 할 수도 있음.
Skopeo 설치
[yum repo 등록] : CentOS7 repo
sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo
[설치 가능 Skopeo version확인]
yum list skopeo --showduplicates | sort -r
[yum으로 skopeo설치]
yum install skopeo -y
[설치 확인]
skopeo -v
참고
https://www.samsungsds.com/kr/insights/docker.html
https://waspro.tistory.com/679
podman
https://podman.io/getting-started/installation
https://www.lesstif.com/container/podman-98926748.html
https://6991httam.medium.com/podman%EC%9D%B4%EB%9E%80-feat-docker-419e04b14cd0
Buildah