참고:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마치면 해당 값을 클라우드 환경과 관련된 값으로 대체합니다.
Podman에 Project Quay를 설치하는 방법 알아보기
소개
Project Quay는 클라우드 네이티브 플랫폼에서 사용할 컨테이너와 같은 아티팩트를 저장하고 관리하는 데 사용되는 오픈 소스 저장소입니다. Project Quay는 다음과 같은 추가 기능도 제공합니다(특정 순서 없음).
- 레지스트리 - 고가용성
- 보안 - 취약점 검사, 로깅 및 감사, 통지 및 경고
- 액세스 제어 - 역할 기반 액세스 제어(RBAC)
- 통합 - OAuth 지원
- 빌드 자동화 - Git/GitHub/GitLab 통합
Operator를 사용하여 Kubernetes 클러스터에 배치하거나 Podman의 독립형 컨테이너 또는 고가용성 클러스터로 배치할 수 있습니다.
목표
이 실습은 Podman에서 Project Quay를 설치하고 실행한 다음 작동 중인지 확인하는 방법을 보여줍니다. 설명된 주요 단계는 다음과 같습니다.
- Podman에 Project Quay 설치
- 기본 Quay 기능 작동 확인
주: 제공된 단계에는 인증서를 사용하여 레지스트리를 구성하는 방법이 포함되지 않습니다. 따라서 비운용 목적이나 내부/공기적 환경에서 권장됩니다.
요구사항
- Oracle Linux가 설치된 시스템
- Podman이 설치됨('container-tools' 패키지)
- 인터넷 접근
Oracle Support 면책
Oracle은 Oracle에서 제공하지 않는 소프트웨어 프로그램 및 운영 체제를 참조하기 때문에 다음 지침에 제공된 일련의 단계에 대한 기술 지원을 제공하지 않습니다. 이 자습서는 편의상 선택적 지침을 제공합니다.
Podman 기반 서비스의 개발 및 사용에 대해 Oracle이 지원하는 방법에 대한 자세한 내용은 https://docs.oracle.com/en/operating-systems/oracle-linux/podman/를 참조하십시오.
실습 환경 설정
주: 무료 실습 환경을 사용하는 경우 연결 및 기타 사용 지침은 Oracle Linux Lab Basics를 참조하십시오.
-
터미널을 열고 아직 연결되지 않은 경우 ssh를 통해 ol-server 인스턴스에 연결합니다.
ssh oracle@<ip_address_of_instance>
(선택 사항) Podman Works 확인
Oracle Linux의 컨테이너 도구 패키지는 최신 버전의 Podman, Buildah, Skopeo 및 연관된 종속성을 제공합니다.
-
Podman의 버전을 확인합니다.
podman -v
-
Podman CLI가 작동 중인지 확인합니다.
podman run quay.io/podman/hello
출력 예:
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
네트워킹 구성
방화벽 규칙 설정
시스템의 방화벽 규칙을 편집하여 Project Quay에 필요한 포트를 엽니다.
-
방화벽 규칙 업데이트
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --permanent --add-port=6379/tcp sudo firewall-cmd --reload
출력 예:
[oracle@ol-server ~]$ sudo firewall-cmd --permanent --add-port=80/tcp success [oracle@ol-server ~]$ sudo firewall-cmd --permanent --add-port=443/tcp success [oracle@ol-server ~]$ sudo firewall-cmd --permanent --add-port=5432/tcp success [oracle@ol-server ~]$ sudo firewall-cmd --permanent --add-port=6379/tcp success [oracle@ol-server ~]$ sudo firewall-cmd --reload success
다음은 각 포트를 사용하는 방법의 목록입니다.
- 포트 80 및 443: Quay 컨테이너에서 사용
- 포트 5432: PostgreSQL 컨테이너에서 사용됨
- 포트 6379: Redis 컨테이너에서 사용
호스트 파일 설정
Project Quay 컨테이너가 함께 통신할 수 있도록 네트워킹을 구성하는 몇 가지 방법이 있습니다. 자세한 내용은 Project Quay 설명서를 참조하십시오.
이러한 옵션 중 하나는 Oracle Linux 시스템의 호스트 이름을 분석할 수 있는지 확인하는 것입니다. 연관된 IP 주소와 함께 호스트 파일에 ol-server 짧은 호스트 이름 및 FQDN 호스트 이름을 추가하여 제공된 무료 실습 환경에서 이미 완료되었습니다.
-
/etc/hosts
파일의 현재 내용을 확인합니다.cat /etc/hosts
출력 예:
[oracle@ol-server ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.150 ol-server.pub.linuxvirt.oraclevcn.com ol-server
(선택 사항) PostgreSQL 클라이언트 설치
이 단계에서는 컨테이너 외부의 명령행에서 PostgreSQL 데이터베이스에 액세스할 수 있습니다. 이 단계는 컨테이너를 구성하고 설정하는 데 필요하지 않습니다.
-
PostgreSQL 클라이언트를 설치합니다.
sudo dnf -y install postgresql
프로젝트 퀘이 데이터 저장소 설정
Project Quay는 메타데이터를 저장하기 위해 데이터베이스를 사용합니다. Postgres 사용은 기본 옵션이며 이 자습서에서 사용됩니다. 또한 MySQL를 대안으로 사용할 수 있지만 이 실습의 범위를 벗어납니다.
-
데이터베이스 컨테이너 데이터 저장 영역에 대한 디렉토리를 생성합니다.
sudo mkdir -p /var/lib/pgsql/data
-
데이터 스토리지에 대한 올바른 권한을 설정합니다.
sudo chmod 0755 /var/lib/pgsql/data
sudo setfacl -m u:26:-wx /var/lib/pgsql/data
-
환경 변수를 정의합니다.
Postgres 컨테이너를 시작하는 데 사용할 Postgres 변수를 정의합니다.
export POSTGRESQL_CONTAINER_NAME=postgres export POSTGRESQL_DB=quay export POSTGRESQL_USER=quayuser export POSTGRESQL_PASSWORD=quay-test
주: 이러한 변수는 다음을 정의하는 데 사용됩니다.
-
POSTGRESQL_CONTAINER_NAME는 Postgres 컨테이너에서 사용되는 이름을 나타냅니다.
-
POSTGRESSQL_DB, POSTGRES_USER 및 POSTGRES_PASSWORD는 Postgres 지정 값을 나타냅니다.
-
-
데이터베이스 데이터 저장소에 대한 사용자 이름, 비밀번호, 데이터베이스 이름, 포트 번호 및 볼륨 마운트 지점과 같은 세부정보를 지정하여
Postgres
컨테이너를 시작합니다.sudo podman run --detach --name ${POSTGRESQL_CONTAINER_NAME} \ --env POSTGRES_USER=${POSTGRESQL_USER} \ --env POSTGRES_PASSWORD=${POSTGRESQL_PASSWORD} \ --env POSTGRES_DB=${POSTGRESQL_DB} \ --publish 5432:5432 \ --volume /var/lib/pgsql/data:/var/lib/postgresql/data:Z \ docker.io/library/postgres:latest
참고:
-volume
설정의 끝에 있는:Z
를 사용하면 이 스토리지 볼륨이 사용으로 설정된 SELinux에서 작동할 수 있습니다. SELinux는 Oracle Linux에서 기본적으로 사용으로 설정됩니다.
PostgreSQL에 트리거 모듈 추가
(선택 사항) PostgreSQL 클라이언트 사용
이러한 단계는 Postgres 클라이언트 패키지가 위의 선택적 단계에서 설치된 경우에만 가능합니다. 해당 패키지가 설치되지 않은 경우 이 선택적 단계를 건너뜁니다.
-
데이터베이스에 연결합니다.
psql -h $(hostname -i) quay quayuser
Password for user quayuser:
는 위의 익스포트 및 컨테이너 생성에 정의된 대로quay-test
입니다. -
trigram 모듈을 만듭니다.
CREATE EXTENSION IF NOT EXISTS pg_trgm;
출력 예:
quay=# CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION
-
\q
,RETURN
키를 차례로 입력하여 PostgreSQL 클라이언트를 종료합니다.\q
출력 예:
quay=# \q [oracle@ol-server ~]$
컨테이너에서 직접 실행
-
trigram 모듈을 만듭니다.
sudo podman exec -it postgres /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS pg_trgm" | psql -d quay -U quayuser'
출력 예:
[oracle@ol-server ~]$ sudo podman exec -it postgres /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS pg_trgm" | psql -d quay -U quayuser' CREATE EXTENSION
PostgreSQL 컨테이너 상태 확인
-
데이터베이스가 시작되었는지 확인합니다.
sudo podman ps
출력 예:
[oracle@ol-server ~]$ sudo podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ec4a57b792d docker.io/library/postgres:10.12 postgres 27 minutes ago Up 26 minutes ago 0.0.0.0:5432->5432/tcp postgresql
-
컨테이너 로그를 확인합니다.
sudo podman logs -f postgres
주:
CTRL+C
를 사용하여 명령 프롬프트로 돌아갑니다.출력 예:
PostgreSQL init process complete; ready for start up. 2023-02-01 16:11:49.512 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 2023-02-01 16:11:49.512 UTC [1] LOG: listening on IPv6 address "::", port 5432 2023-02-01 16:11:49.514 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2023-02-01 16:11:49.524 UTC [64] LOG: database system was shut down at 2023-02-01 16:11:49 UTC 2023-02-01 16:11:49.528 UTC [1] LOG: database system is ready to accept connections
-
Postgres 컨테이너의 IP 주소를 확인합니다. 나중에 필요하므로 기록해 두십시오.
sudo podman inspect -f "" postgres
출력 예:
[oracle@ol-server ~]$ sudo podman inspect -f "" postgres 10.88.0.2
이 작업을 수행하는 다른 방법은 다음과 같습니다.
sudo podman inspect postgres | grep IPAddress
출력 예:
[oracle@ol-server ~]$ sudo podman inspect postgres | grep IPAddress "IPAddress": "10.88.0.2", "IPAddress": "10.88.0.2",
참고: 여기에 사용된
postgres
이름은 이전 Podman 명령에서 사용된--name
변수에 사용된 이름과 일치하여 PostgreSQL 컨테이너를 생성합니다.
Redis 설정
임시 정보를 저장하려면 Project Quay에서 Redis가 필요합니다.
-
Redis 컨테이너 데이터 스토리지에 대한 디렉토리를 생성합니다.
sudo mkdir -p /var/lib/redis
-
권한을 설정합니다.
sudo chmod 0755 /var/lib/redis
-
Redis 컨테이너를 시작합니다.
sudo podman run --detach --name redis \ --restart=always \ --publish 6379:6379 \ --privileged=true \ --volume /var/lib/redis:/var/lib/redis:Z \ docker.io/library/redis:latest
-
Redis 컨테이너가 실행 중인지 확인합니다.
sudo podman ps
-
Redis 컨테이너의 로그를 확인합니다.
sudo podman logs -f redis
주:
CTRL+C
를 사용하여 명령 프롬프트로 돌아갑니다. -
Redis 컨테이너의 IP 주소를 확인합니다. 나중에 필요하므로 기록해 두십시오.
sudo podman inspect -f "" redis
프로젝트 퀘이 구성
Project Quay에는 PostgreSQL 데이터베이스를 설정하고 Quay 구성 파일을 생성하기 위한 세부 정보를 제공하는 도구가 포함되어 있습니다. 구성 도구 자체는 웹 기반이며 Quay 구성 파일은 tar/압축된 YAML 파일로 생성되며, 이동한 후 확장해야 합니다.
-
Project Quay ConfigTool를 실행합니다.
sudo podman run -d --name quay-config -p 80:8080 -p 443:8443 quay.io/projectquay/quay config secret-pass
출력 예:
[oracle@ol-server ~]$ sudo podman run -d --name quay-config -p 80:8080 -p 443:8443 quay.io/projectquay/quay config secret-pass Trying to pull quay.io/projectquay/quay:latest... Getting image source signatures Copying blob ec924a250552 done Copying blob fd07da1562ac done Copying blob 3550ee360766 done Copying blob b68865894b50 done Copying blob ff46f0c54d73 done Copying blob 88956768f1ec done Copying blob 644b12ae1636 done Copying blob 9661ced91a5f done Copying config c1a4397f6e done Writing manifest to image destination Storing signatures cc84cafcc5bdc41dacc86c22ba7d0d52d2bf02c0b1fca9aa59879942c7669f13
-
Luna Desktop을 마우스 오른쪽 버튼으로 누르고
Open Terminal Here
을 선택합니다. -
새로 열린 터미널에서 SSH 터널을 구성합니다.
ssh -L 8080:localhost:80 oracle@<ip_address_of_ol-server>
출력 예:
[luna.user@lunabox ~]$ ssh -L 8080:localhost:80 oracle@129.159.195.234 Activate the web console with: systemctl enable --now cockpit.socket Last login: Tue Feb 7 18:56:30 2023 from 138.1.16.50
여기서
8080
는 호스트의 포트80
에 대한 Luna 데스크탑에서 열린 포트입니다. 포트80
은 Project Quay 컨테이너에 대해 외부적으로 매핑된 포트입니다. -
Luna Desktop에서 새 브라우저 세션을 열고 Project Quay ConfigTool의 URL을 입력합니다.
http://localhost:8080
출력 예:
-
제공된 값을 사용하여 Quay Configuration 편집기에 로그인합니다.
- 사용자 이름 -
quayconfig
- Password(암호) -
secret-pass
(주: Quay 구성 컨테이너를 시작할 때 전달된 마지막 매개변수와 일치합니다.)
출력 예:
- 사용자 이름 -
Quay 구성 정보 입력
다음 단계는 Postgres, Redis 등을 설정하는 동안 이전 단계에서 수집/고지된 정보 중 일부를 사용하는 동안 새로운 세부 정보를 입력하는 것입니다.
-
로그인한 후 아직 표시되지 않은 경우 '기본 구성' 섹션으로 스크롤합니다. 여러 개의 필드를 채울 수 있습니다.
- 레지스트리 제목, Registry Title Short, Enterprise Logo URL 및 연락처 정보
이 실습/튜토리얼에서는 변경되지 않습니다.
출력 예:
-
Server Configuration 섹션으로 이동하여 서버의 호스트 이름을 입력합니다(/etc/hosts 파일의 앞부분 참조).
- 서버 호스트 이름: ol-server.pub.linuxvirt.oraclevcn.com
출력 예:
-
그런 다음 데이터베이스라는 섹션으로 스크롤합니다.
출력 예:
-
데이터베이스 유형 필드 옆에 있는 드롭다운 상자를 누릅니다. 두 가지 옵션(MySQL 및 Postgres, Postgres)이 나열됩니다.
주: Postgres를 선택하는 이유는 Clair 스캔 도구가 MySQL Quay 데이터베이스와 작동하지 않기 때문에 나중에 Clair 스캔 도구를 선택할 수 있도록 허용하는 것입니다.
출력 예:
-
이제 Postgres 특정 필드가 표시되고 Postgres에 액세스할 수 있도록 세부 정보를 입력합니다.
- 데이터베이스 서버: a)
/etc/hosts
파일에 입력된 대로 $HOSTNAME 또는 FQDN(DNS를 사용하여 분석해야 함)을 입력하거나 b) 이전 단계에서 기록된 컨테이너 IP 주소를 사용합니다(예: 10.88.0.2). - 사용자 이름: quayuser
- 비밀번호: quay-test
- 데이터베이스 이름: 회색
**참고: 이러한 모든 값은 Postgres 컨테이너를 시작할 때 사용된 값과 일치해야 하지만(이전 참조) 그렇지 않으면 완전히 사용자가 구성할 수 있습니다.
출력 예:
- 데이터베이스 서버: a)
-
계속해서 Redis 섹션 아래로 스크롤하여 Redis 컨테이너를 시작하는 동안 반환된 IP 주소를 입력합니다.
- Redis Hostname - a)
/etc/hosts
파일에 입력된 대로 $HOSTNAME 또는 FQDN(DNS를 사용하여 확인해야 함)을 입력하거나 b) 이전 단계에서 기록된 컨테이너 IP 주소를 사용합니다(예: 10.88.0.3).
출력 예:
- Redis Hostname - a)
-
브라우저 화면 하단에는 Validate Configuration Changes이라는 floating 대화 상자가 있습니다.
출력 예:
-
Project Quay 서버가 작동할 최소 요구 사항이 충족되었는지 확인하려면 이 항목을 클릭합니다.
출력 예:
-
단추를 눌러 구성 파일을 다운로드합니다. 파일(
quay-config.tar.gz
)이 다운로드되었는지 확인합니다.참고: 실습 환경에서는 생성된 구성 파일이 Quay 저장소를 구성 중인 서버가 아닌 Luna Desktop의 ~/Downloads 디렉토리에 저장됩니다.
출력 예:
-
Luna Desktop을 마우스 오른쪽 버튼으로 누르고
Open Terminal Here
을 선택합니다. 새로 연 터미널에서 구성 파일이 다운로드되었는지 확인합니다.ls -lsa ~/Downloads
출력 예:
[luna.user@lunabox Desktop]$ ls -lsa ~/Downloads total 12 0 drwx------. 2 luna.user luna.user 32 Feb 8 11:59 . 8 drwx------. 1 luna.user luna.user 4096 Feb 8 11:59 .. 4 -rw-rw-r--. 1 luna.user luna.user 1214 Feb 8 11:59 quay-config.tar.gz
-
Luna Desktop 시스템에서 Project Quay가 구성 및 설치되고 있는 ol-server 시스템으로 파일을 이동합니다.
scp ~/Downloads/quay-config.tar.gz oracle@<ip_address_of_ol-server>:~
중요: 위 명령 끝에 있는
:~
를 제거하지 마십시오. 제거된 경우 nothing will be copied을 ol-server 인스턴스로 복사합니다.출력 예:
[luna.user@lunabox Downloads]$ scp quay-config.tar.gz oracle@129.159.195.234:~ quay-config.tar.gz 100% 1214 64.1KB/s 00:00
-
exit
를 입력하여quay-config.tar.gz
파일을 복사하는 데 사용되는 활성 터미널 창을 닫습니다. -
SSH 터널을 여는 데 사용되는 터미널 창으로 전환합니다.
-
CTRL-C
를 입력하여 SSH 터널을 닫습니다. SSH 터널 세션을 종료해야 합니다. 터미널 창 자체를 열어 두십시오. 향후 단계에서 다시 한 번 필요합니다.참고: 연결하려는 컨테이너 세션이 종료되었으므로 SSH 터널 세션을 닫아야 합니다.
-
계속
ol-server
에 로그온되어 있는 원래 터미널 window로 전환하고 oracle 유저 홈 디렉토리에quay-config.tar.gz
파일이 표시되는지 확인합니다.ls ~
출력 예:
[oracle@ol-server ~]$ ls ~ quay-config.tar.gz
-
Project Quay 구성 컨테이너 프로세스를 중지합니다.
sudo podman stop quay-config
출력 예:
[oracle@ol-server config]$ sudo podman stop quay-config WARN[0010] StopSignal SIGTERM failed to stop container quay-config in 10 seconds, resorting to SIGKILL quay-config
-
quay-config
컨테이너가 중지되었는지 확인합니다.sudo podman ps
시작 준비 대기
프로젝트 할당량 /config 및 /storage 디렉토리의 실제 위치는 올바른 권한이 적용되고 액세스 가능한 한 필요에 따라 변경할 수 있습니다.
-
ol-server에 연결된 원래 터미널 창을 사용하여 Project Quay 구성을 보유할 위치를 만듭니다.
mkdir -p ~/quay/config
-
Project Quay가 공예품을 저장할 수 있는 위치를 생성합니다.
mkdir -p ~/quay/storage
-
Gzipped Tar 파일을 Quay 구성 디렉토리로 확장합니다.
tar -xzvf quay-config.tar.gz -C ~/quay/config/
-
YAML 구성 파일이 있는지 확인합니다.
cat ~/quay/config/config.yaml
-
Project Quay
config
디렉토리에root
'Read' 액세스 권한을 부여합니다.sudo setfacl -R -m u:1001:r ~/quay/config
-
Project Quay
storage
디렉토리에root
'읽기', '쓰기' 및 '실행' 액세스 권한을 부여합니다.sudo setfacl -R -m u:1001:rwx ~/quay/storage
프로젝트 정지 시작
-
Project Quay 서버를 시작합니다.
sudo podman run --name quay --restart=always --publish 443:8443 --publish 80:8080 --privileged=true --volume ~/quay/config:/conf/stack:Z --volume ~/quay/storage:/datastorage:Z --detach quay.io/projectquay/quay:latest
-
시작되었는지 확인합니다.
sudo podman ps
-
프로젝트 큐 로그를 확인하십시오. 프로젝트 큐가 처음 시작될 때 완료하는 데 최대 15-20분이 걸릴 수 있습니다.
sudo podman logs -f quay
-
이전에 SSH 터널을 구성하는 데 사용된 터미널 창으로 전환하고 SSH 터널을 다시 엽니다.
ssh -L 8080:localhost:80 oracle@<ip_address_of_ol-server>
출력 예:
[luna.user@lunabox ~]$ ssh -L 8080:localhost:80 oracle@129.159.195.234 Activate the web console with: systemctl enable --now cockpit.socket Last login: Tue Feb 7 18:56:30 2023 from 138.1.16.50
-
Luna Desktop에서 새 브라우저 창을 열고 Project Quay Registry 로그인 화면에 연결합니다.
http://localhost:8080
출력 예:
주: 브라우저 창이 오류 메시지(구성 로드 불능을 나타내는 경우가 많음)를 반환하는 경우 프로젝트 Quay 서버가 이 초기 시작에 대해 여전히 자체적으로 구성되고 있음을 의미합니다. 잠시 기다렸다가 다시 시도하십시오.
새 프로젝트 퀘이 사용자 및 로그인 생성
-
첫번째 작업은 새 유저를 생성하는 것입니다. Quay Login 화면에서
Create Account
라는 링크(Username 및 Password 필드 아래)를 누릅니다.출력 예:
-
새 계정 생성 페이지가 표시되면 다음 정보를 입력합니다.
- Username(사용자 이름) - Quay Registry에 표시되는 사용자 이름입니다.
- 전자 메일 주소 - 적합한 전자 메일 주소여야 합니다(검증을 위해 이 실습에서 사용되지 않음).
- Password(암호) - 암호를 입력합니다(최소 8자여야 함).
주: 빨간색 배경이 표시된 필드가 있을 경우 예상치 않거나 부적합한 값이 입력되었음을 의미합니다. 녹색 배경은 입력한 값이 유효함을 나타냅니다.
출력 예:
중요: super user를 만드는 방법은 여기에 설명되어 있습니다. 수퍼 유저는 확장 권한이 부여된 일반 사용자로, 다음 작업을 수행할 수 있습니다.
- 사용자 관리
- 조직 관리
- 질의 사용 로그
- 변경 로그 보기
-
모든 입력 필드에 녹색 배경이 있으면(이전 스크린샷 참조)
Create Account
버튼을 누릅니다. Project Quay는 새 계정을 생성하고 자동으로 로그인합니다.(선택 사항) 개인 선택 또는 회사 정책에 따라 username 및 password 값을 저장할지 여부를 결정합니다.
출력 예:
-
프로젝트 퀘이가 실행 중이며 첫 번째 사용자가 로그인되었습니다.
출력 예:
새 프로젝트 퀘이 레지스트리 저장소 생성
Project Quay의 저장소 이름은 보통 설정 후 저장('푸시')할 컨테이너 이미지와 동일합니다. 이렇게 하면 나중에 로컬에서 호스트된 이 컨테이너 레지스트리에서 컨테이너 이미지를 찾는 것이 훨씬 더 명확해집니다. 하지만 실습 단계를 위해 이를 준수할 필요가 없으므로 스크린샷에 저장소 이름이 _test01으로 표시되는 이유가 있습니다.
-
새 저장소 생성 링크(화면의 오른쪽 상단)를 누르면 새 저장소 생성 화면이 표시됩니다.
출력 예:
-
필요한 값을 입력합니다. 아래와 같습니다.
- 저장소 이름 - 저장소 이름은 [a-z0-9][.a-z0-9-]*(/[a-z0-9][.a-z0-9-])과 일치해야 합니다(참고: 대문자는 부적합합니다).
- Repostory Description(저장소 설명) - 선택사항입니다.
- 원하는 용도에 따라 저장소를 공용 또는 개인으로 설정하도록 선택합니다.
주: 저장소 설명 및 공용/개인 설정은 나중에 변경할 수 있습니다.
출력 예:
-
단추를 눌러 새 저장소를 생성합니다. 이전 단계에서 선택한 저장소 유형에 따라 Create Private Repository 또는 Create_Public_Repository가 표시됩니다.
출력 예:
-
새로 생성된 저장소가 표시됩니다.
출력 예:
이때 Project Quay Registry가 시작되면 새 사용자가 생성되고 로그인됩니다. 마지막으로 컨테이너 레지스트리 내에 새 저장소가 생성되었습니다. 다음 단계는 명령행으로 돌아가서 새로 생성된 이 컨테이너 레지스트리에 컨테이너를 업로드하는 것입니다.
Project Quay 사용
이러한 단계는 외부 레지스트리에서 이미지를 가져온 다음 이미지를 태그 지정하여 새로 만든 test01 저장소에 마지막으로 이미지를 푸시하기 전에 새로 만든 Project Quay Registry에 로그온하는 방법을 보여줍니다.
주: 이 Project Quay 설치는 SSL 인증서를 사용하여 구성되지 않았으므로 로그인 및 푸시 작업을 사용하려면 추가 플래그(
--tls-verify=false
)를 사용해야 합니다. 그렇지 않으면 실패합니다. 운용 환경에서는--tls-verify=false
플래그를 사용하지 않아야 합니다.
-
터미널을 열고 아직 연결되지 않은 경우 ssh를 통해 ol-server 인스턴스에 연결합니다.
ssh oracle@<ip_address_of_ol-server>
-
로컬에서 호스트된 Project Quay 레지스트리에 저장할 이미지를 가져옵니다.
podman pull quay.io/operator-framework/operatorhubio:v4
출력 예:
podman pull quay.io/operator-framework/operatorhubio:v4 Trying to pull quay.io/operator-framework/operatorhubio:v4... Getting image source signatures Copying blob de07aeb713d7 done Copying blob ef32bf2cb8c7 done Copying blob bf5952930446 done Copying blob 84807cd1a858 done Copying blob 1e60e070fb81 done Copying blob a42b61b64a1a done Copying blob 4002c47008f9 done Copying blob 44e6bcd92ca9 done Copying blob f8baa3854da1 done Copying blob c0ea348411ae done Copying config 11fa238eb3 done Writing manifest to image destination Storing signatures 11fa238eb3e3aa3262cafd975a9ca787e4f0832cd369ce3d1cb1c9c70573f4be
-
다운로드한 이미지에 대상의 세부정보(새로 생성된 프로젝트 콰이 레지스트리)를 태그 지정합니다. 사용된 tag는 원하는 값일 수 있습니다. 이 예에서는 'latest"입니다.
podman tag quay.io/operator-framework/operatorhubio:v4 ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest
여기서
user01
는 레지스트리의 사용자 이름이고test01
는 레지스트리 이름입니다. -
새로 생성된 Project Quay Registry 및 방금 생성한 저장소에 로그인합니다.
podman login --tls-verify=false ol-server.pub.linuxvirt.oraclevcn.com/user01/test01
주: 이전 단계에서 Project Quay 사용자를 생성할 때 사용되는 사용자 이름 및 비밀번호 값을 사용하십시오.
출력 예:
[oracle@ol-server ~]$ podman login --tls-verify=false ol-server.pub.linuxvirt.oraclevcn.com/user01/test01 Username: user01 Password: Login Succeeded!
-
이미지를 새로 만든 Project Quay Registry로 푸시합니다.
podman push --tls-verify=false quay.io/operator-framework/operatorhubio:v4 ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest
출력 예:
podman push --tls-verify=false quay.io/operator-framework/operatorhubio:v4 ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest Getting image source signatures Copying blob 8d46fa734840 done Copying blob c5350d986805 done Copying blob 274132c050df done Copying blob d0f104dc0a1f done Copying blob 9d51489878a0 done Copying blob ed6469d35467 done Copying blob fa152f521d35 done Copying blob b277d564135b done Copying blob 5764184699a3 done Copying blob 15d6d3b2e9e6 done Copying config 76a6ea4d80 done Writing manifest to image destination Storing signatures
-
브라우저 창으로 돌아가서 이전에 만든 user-1/test01 저장소의 Repository Tags 섹션으로 이동하면 'tagged' 이미지가 나열됩니다.
출력 예:
-
로컬 Project Quay Registry에서 이미지를 검색할 수 있는지 여부를 테스트하기 전에 로컬 복사본을 삭제해야 합니다.
podman rmi ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest
출력 예:
[oracle@ol-server config]$ podman rmi ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest Untagged: ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest
-
그런 다음 로컬에서 호스트된 Project Quay Registry에서 이미지를 가져옵니다.
podman pull --tls-verify=false ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest
출력 예:
[oracle@ol-server config]$ podman pull --tls-verify=false ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest Trying to pull ol-server.pub.linuxvirt.oraclevcn.com/user01/test01:latest... Getting image source signatures Copying blob eacf9093f015 done Copying blob d204dcb236ad done Copying blob fcbc1d0b6248 done Copying blob 5dd584b7c36d done Copying blob 7940dd7814b2 done Copying blob a06d838fcfaf done Copying blob a783f1b4704a done Copying blob 8875926a3ee5 done Copying blob 622c87e26f84 done Copying blob 2ec61b0ec8cf done Copying config 76a6ea4d80 done Writing manifest to image destination Storing signatures 76a6ea4d8064c26288fd07db817a683ca476b8ca64de07a2568e7acf53c78ded
그러면 로컬 Project Quay Registry가 자체 저장소 내에 저장된 컨테이너 이미지를 저장한 다음 제공할 수 있음을 확인합니다.
다음 단계
이 실습에서는 Podman에서 Project Quay Registry를 설치하고 실행하는 방법을 설명합니다. 그러나 Project Quay에는 아래와 같이 이 실습의 범위를 벗어나는 많은 기능과 능력이 있습니다.
- 고가용성을 위해 배포 가능(Podman 또는 Kubernetes 사용)
- Operator 또는 Helm을 통해 Kubernetes에 배포 가능
- OAuth 및 Email 시스템과 통합할 수 있습니다.
- 저장소 미러링 지원
- Clair 기반 이미지 보안 스캔을 사용으로 설정할 수 있음
- Dockerfile 빌드 지원
자세한 내용은 프로젝트 Quay 설명서에서 확인할 수 있습니다.
그 동안, 많은 시간을 할애하여이 실험실을 시도해 주셔서 감사합니다.
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning 탐색기가 됩니다.
제품 설명서는 Oracle Help Center를 참조하십시오.
Learn to Install Project Quay on Podman
F78010-01
February 2023
Copyright © 2023, Oracle and/or its affiliates.