6장. UBI 컨테이너에 소프트웨어 추가
Red Hat UBI(Universal Base Images)는 RHEL 콘텐츠의 하위 집합에서 빌드됩니다. UBI는 또한 UBI와 함께 사용할 수 있도록 자유롭게 설치할 수 있는 RHEL 패키지 서브 세트도 제공합니다. 실행 중인 컨테이너에 소프트웨어를 추가하거나 업데이트하려면 RPM 패키지 및 업데이트가 포함된 DNF 리포지토리를 사용할 수 있습니다. UBI는 Python, Perl, Node.js, Ruby 등과 같은 사전 빌드된 언어 런타임 컨테이너 이미지 세트를 제공합니다.
UBI 리포지토리에서 실행 중인 UBI 컨테이너에 패키지를 추가하려면 다음을 수행합니다.
-
UBI 초기화 및 UBI 표준 이미지에서
dnf
명령을 사용합니다. -
UBI 최소 이미지에서
microdnf
명령을 사용하십시오.
실행 중인 컨테이너에 직접 소프트웨어 패키지를 설치하고 사용하면 패키지를 일시적으로 추가합니다. 변경 사항은 컨테이너 이미지에 저장되지 않습니다. 패키지를 영구적으로 변경하려면 Buildah를 사용하여 컨테이너 파일에서 이미지 빌드 섹션을 참조하십시오.
6.1. UBI init 이미지 사용 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너가 호스트 시스템에서 실행될 때 systemd
서비스(/sbin/init
)에 의해 자동으로 시작되도록 웹 서버(httpd
)를 설치하고 구성하는 Containerfile
을 사용하여 컨테이너를 빌드할 수 있습니다. podman build
명령은 하나 이상의 Containerfiles
및 지정된 빌드 컨텍스트 디렉터리에 있는 지침을 사용하여 이미지를 빌드합니다. 컨텍스트 디렉터리는 아카이브, Git 리포지토리 또는 Containerfile
의 URL로 지정할 수 있습니다. 컨텍스트 디렉터리를 지정하지 않으면 현재 작업 디렉터리가 빌드 컨텍스트로 간주되며 Containerfile
을 포함해야 합니다. --file
옵션을 사용하여 Containerfile
을 지정할 수도 있습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
프로세스
새 디렉터리에 다음 내용이 포함된
Containerfile
을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Containerfile
은httpd
패키지를 설치하고 부팅 시httpd
서비스를 시작하고, 테스트 파일(index.html
)을 생성하고, 웹 서버를 호스트(포트 80)에 노출하고, 컨테이너가 시작될 때systemd
init 서비스(/sbin/init
)를 시작합니다.컨테이너를 빌드합니다.
podman build --format=docker -t mysysd .
# podman build --format=docker -t mysysd .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
systemd
를 사용하여 컨테이너를 실행하고 시스템에서 SELinux가 활성화된 경우container_manage_cgroup
부울 변수를 설정해야 합니다.setsebool -P container_manage_cgroup 1
# setsebool -P container_manage_cgroup 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysysd_run
:이라는 컨테이너를 실행합니다.podman run -d --name=mysysd_run -p 80:80 mysysd
# podman run -d --name=mysysd_run -p 80:80 mysysd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysysd
이미지는mysysd_run
컨테이너로 데몬 프로세스로 실행되며, 컨테이너의 포트 80이 호스트 시스템의 포트 80에 노출됩니다.참고rootless 모드에서는 호스트 포트 번호 >= 1024를 선택해야 합니다. 예를 들면 다음과 같습니다.
podman run -d --name=mysysd -p 8081:80 mysysd
$ podman run -d --name=mysysd -p 8081:80 mysysd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포트 번호 < 1024를 사용하려면
net.ipv4.ip_unprivileged_port_start
변수를 수정해야 합니다.sysctl net.ipv4.ip_unprivileged_port_start=80
# sysctl net.ipv4.ip_unprivileged_port_start=80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너가 실행 중인지 확인합니다.
podman ps
# podman ps a282b0c2ad3d localhost/mysysd:latest /sbin/init 15 seconds ago Up 14 seconds ago 0.0.0.0:80->80/tcp mysysd_run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 서버를 테스트합니다.
curl localhost/index.html
# curl localhost/index.html Successful Web Server Test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow