Amazon Linux 2 x86을 실행하는 EC2 인스턴스에 Podman을 설치하고 루트 없는 컨테이너를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 20일

Amazon Linux 2 x86을 실행하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있습니다. 컨테이너를 관리하기 위해 도커 도구 대신, Podman을 설치하고 설정하려면 어떻게 해야 합니까?

간략한 설명

Linux에서 컨테이너를 관리하는 오픈 소스 도구인 Podman은 도커 도구를 대체하는 도구입니다. Podman은 실행 중인 데몬을 필요로 하지 않으며 cgroup V2를 지원합니다. 자세한 내용은 podman.IO 웹 사이트에서 podman을 참조하십시오.

명령 구문은 도커 도구와 유사합니다. 예를 들어, 다음 명령을 사용하여 표준 hello-world 컨테이너를 시작합니다.

$ podman run --rm -it hello-world

해결 방법

1.    SSH를 사용하여 EC2 Linux 인스턴스에 연결합니다.

2.    도커를 비활성화합니다.

$ sudo amazon-linux-extras disable docker

3.    amazon-linux-extras 도구를 사용하여 kernel-ng 주제에서 최신 커널을 설치합니다.

$ sudo amazon-linux-extras install kernel-ng

4.    yum 플러그인을 설치하고 Kubic Project 저장소를 추가하여 업데이트된 Podman 패키지 및 종속성에 대한 액세스를 활성화합니다. Kubic Project의 패키지 목록은 Build.opensuse.org 웹 사이트에서 Stable releases of upstream github/com/containers packages를 참조하십시오.

$ sudo yum check-update

$ sudo yum install -y yum-utils yum-plugin-copr

$ sudo yum-config-manager --add-repo \
   https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo
$ sudo yum copr enable -y lsm5/container-selinux

5.    Podman 패키지 및 해당 종속 항목을 설치합니다.

$ sudo yum check-update

$ sudo yum install -y podman

6.    grubby 도구를 사용하여 커널 인수를 grub 구성에 추가합니다. 인수는 cgroup V2 및 사용자 네임스페이스를 활성화합니다.

$ sudo grubby --update-kernel=ALL \
   --args="systemd.unified_cgroup_hierarchy=1 namespace.unpriv_enable=1 user_namespace.enable=1"

7.    네임스페이스 범위를 활성화합니다. 네임스페이스는 컨테이너의 루트를 컨테이너 외부의 권한이 없는 사용자에게 매핑합니다.

$ echo "user.max_user_namespaces=10000" | sudo tee /etc/sysctl.d/98-userns.conf

8.    /etc/subuid/etc/subgid 파일에 사용자에 대한 항목을 추가합니다. 이러한 항목은 권한이 없는 사용자에게 컨테이너에서 사용할 UID 범위를 제공합니다. 예를 들어, 사용자는 ec2-user입니다.

$ echo "$(id -un):100000:65536" | sudo tee -a /etc/subuid
$ echo "$(id -un):100000:65536" | sudo tee -a /etc/subgid

9.    인스턴스를 재부팅하여 최신 커널을 사용합니다.

$ sudo systemctl reboot

10.    SSH를 사용하여 인스턴스에 연결합니다.

11.    Podman이 예상대로 작동하는지 확인합니다.

$ podman version
Version:      2.0.2
API Version:  1
Go Version:   go1.13.11
Built:        Thu Jan  1 00:00:00 1970
OS/Arch:      linux/amd64

$ podman run --rm -it hello-world
Trying to pull registry.fedoraproject.org/hello-world...
  manifest unknown: manifest unknown
Trying to pull registry.access.redhat.com/hello-world...
  name unknown: Repo not found
Trying to pull registry.centos.org/hello-world...
  manifest unknown: manifest unknown
Trying to pull docker.io/library/hello-world...
Getting image source signatures
Copying blob 0e03bdcc26d7 done
Copying config bf756fb1ae done
Writing manifest to image destination
Storing signatures

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

앞의 예제 출력은 Podman 설치를 확인하고 권한이 없는 ec2-user가 컨테이너를 시작할 수 있는지 확인합니다.

13.    (선택 사항) 대신 Podman을 사용하도록 도커의 로컬 bash 별칭을 설정합니다.

$ echo "alias docker=podman" >> $HOME/.bashrc
$ source $HOME/.bashrc
$ docker version
Version:      2.0.2
API Version:  1
Go Version:   go1.13.11
Built:        Thu Jan  1 00:00:00 1970
OS/Arch:      linux/amd64

14.    (선택 사항) podman-compose 도구를 설치합니다. podman-compose 도구는 도커 대신, Podman을 사용하여 docker-compose.yml 파일을 실행하는 스크립트입니다. 자세한 내용은 GitHub 웹 사이트에서 podman-compose를 참조하십시오.

podman-compose 도구를 설치하려면 다음을 수행합니다.

인스턴스에 Python3 패키지가 설치되어 있는지 확인합니다.

$ sudo yum install -y python3 python3-pip

Python pip 도구를 사용하여 podman-compose 도구를 로컬로 설치합니다.

$ pip3 install --user --upgrade PyYAML 
$ pip3 install --user --upgrade podman-compose

이제 Podman에서 docker-compose.yml 파일을 실행할 수 있습니다.

$ echo "alias docker-compose=podman-compose" >> $HOME/.bashrc
$ source $HOME/.bashrc

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?