기술의 미래에 대해 이야기할 때 많은 노련한 기술자들은 가상화와 컨테이너화가 그 길이라는 것을 알고 있습니다. 애플리케이션 및 서비스 보안을 강화하고 애플리케이션당 서버 1개 모델보다 스냅샷, 템플릿 및 더 큰 사용자 정의를 허용하는 다른 서비스를 통해 쉽게 관리할 수 있습니다. 그러나 가상화 및 컨테이너화를 시작하는 방법이 항상 완전히 명확한 것은 아닙니다. 우리는 이전에 Linux, Windows 및 macOS에서 가상화를 여러 번 다루었지만 컨테이너화는 약간 다른 짐승인 경향이 있습니다. 이 기사에서는 컨테이너화를 위한 훌륭한 도구인 Linux의 Podman에 대한 초보자 가이드를 제공합니다.
컨테이너란 무엇입니까?
컨테이너는 본질적으로 작은 가상 머신이지만 애플리케이션용입니다. 그들은 동일한 개념을 많이 사용하고 동일한 보안 및 사용 편의성 기능을 많이 가지고 있지만 훨씬 작으며 응용 프로그램을 쉽게 이미징하고 배포할 수 있습니다. 이것은 Flatpaks와 Snaps가 기반으로 하는 많은 것입니다. 하나의 프로그램, 격리된 환경에서 실행되는 여러 응용 프로그램의 유사점을 볼 수 있습니다.
Podman이란 무엇입니까?
우리 중 많은 사람들이 컨테이너 엔진의 OG인 Docker에 대해 들어봤을 것입니다. Podman은 몇 가지 주요 차이점을 제외하고 Docker와 매우 유사한 구조를 사용하는 유사한 컨테이너 엔진입니다.
하나는 Podman은 데몬이 없는 반면 Docker는 데몬에 의존한다는 것입니다. 즉, Podman 컨테이너는 루트 수준 권한 없이도 작동하여 보안과 유연성을 높일 수 있습니다. 사용자 수준에서 실행되는 컨테이너는 사용자가 자신의 컨테이너만 볼 수 있고 다른 사람의 컨테이너만 볼 수 있음을 의미합니다. Podman은 단순한 아키텍처로 인해 시스템 리소스가 더 가벼워서 더 즐거운 경험을 제공합니다.
데몬이 없는 아키텍처는 루트 없는 컨테이너라고 하는 것으로 이어집니다. 이전의 차이점을 기반으로 하지만 보안에 중점을 둔 개념입니다. 공격자가 컨테이너를 손상시키고 어떤 이유로든 탈출에 성공하면 루트 권한이 아닌 기본 사용자 권한만 갖게 됩니다. 이렇게 하려면 몇 가지 추가 설정이 필요하고 현재 몇 가지 단점이 있지만 한 번 볼만한 가치가 있습니다.
Podman 설치
대부분의 배포판에서 Podman은 기본 저장소에 있으므로 간단한 설치 명령이 됩니다.
# Debian/Ubuntu sudo apt install podman # Fedora/CentOS/Redhat sudo dnf install podman # Arch Linux sudo pacman -S podman # OpenSUSE sudo zypper install podman # Gentoo sudo emerge app-emulation/podman
Podman 사용
Podman 컨테이너를 시작하는 명령 구문은 약간 혼란스러울 수 있지만 일단 익숙해지면 패턴을 인식하기 시작할 것입니다. 터미널에 다음 명령을 입력하여 실행할 수 있는 프로젝트의 샘플 컨테이너가 있습니다.
podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
그러면 나열된 레지스트리에서 일부 이미지가 가져오고 완료되면 긴 번호가 표시됩니다. 나중에 실행 중인 컨테이너를 확인할 때 보게 됩니다.
실행 중인 Podman 컨테이너를 확인하려면 다음 명령을 입력하세요.
podman ps
이전에 시작한 컨테이너가 표시됩니다. 이것은 실행 중임을 확인합니다. 그러나 Apache가 실행 중인 웹 페이지를 구체적으로 보려면 다음 명령을 실행합니다.
curl https://0.0.0.0:8080
0.0.0.0
대체 podman ps
를 실행할 때 표시되는 모든 IP 주소 명령. 여러 개의 왜곡된 HTML이 표시되어야 하지만 상단을 바로 보면 HTML의 제목 구문을 볼 수 있고 제대로 작동하고 있음을 알 수 있습니다.
<title>Test Page for the Apache HTTP Server on Fedora</title>
포드맨 이미지
Podman의 좋은 점은 이미지를 사용한다는 것입니다. httpd
와 같은 다른 이미지를 검색할 수 있습니다. 또는 실행에 관심이 있는 다른 프로그램.
podman search CONTAINERNAME
vncserver
를 검색했습니다. , 이것이 내가 얻은 것입니다. 많은 옵션이 있으며 개인 취향에 따라 선택하면 됩니다.
해당 이미지 중 하나를 가져오려면 podman pull
을 실행하세요. 명령.
podman pull CONTAINERNAME
완전히 정확하려면 컨테이너 레지스트리의 전체 URL을 가져오는 것이 좋습니다. 예를 들어 실행 중인 명령은 다음과 같습니다.
podman pull docker.io/michaelaboeckler/vncserver
podman pull vncserver
를 실행하는 것보다 내가 원하지 않는 이미지가 있을 수 있기 때문에 내가 원하는 이미지 대신 선택됩니다.
다음 명령을 사용하여 이미지를 확인할 수도 있습니다.
podman images
다음 명령으로 컨테이너를 중지합니다.
podman stop -l
-l
플래그는 최신 실행 컨테이너를 중지한다는 것을 의미하지만 -a
를 사용할 수도 있습니다. 모든 컨테이너를 중지하는 플래그입니다.
Podman이 컨테이너 이미지에 대해 docker.io도 볼 수 있다는 것을 눈치채셨을 것입니다. Podman 명령과 Docker 명령은 본질적으로 동일하기 때문입니다. 따라서 때때로 docker
별칭을 사용하는 것이 좋습니다. podman
에 대한 명령 이렇게:
alias docker='podman'
즉, docker
를 입력할 때마다 , 컴퓨터에서 podman
을 실행합니다. 어쨌든 명령합니다.
루트리스 포드맨
루트가 없는 컨테이너용으로 시스템을 설정하려면 거쳐야 할 설정이 많지만 Github 페이지에 훌륭한 문서가 있습니다.
데몬이 없고 루트가 없는 컨테이너를 실행하여 시스템을 간결하고 깔끔하며 안전하게 유지할 수 있게 해주는 훌륭한 도구인 Podman에 대한 이 입문서를 재미있게 읽으셨기를 바랍니다. 그렇다면 ChromeOS의 컨테이너에서 Ubuntu 실행, Docker 컨테이너를 다른 호스트로 복사, Docker 컨테이너 리소스 제한에 대한 가이드와 같은 다른 컨테이너 콘텐츠를 확인하세요.