본문 바로가기
기술 기록/Docker

error, 도커) Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 해결방법

by Fola 2022. 5. 4.

error, 도커) Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 해결방법

 

 

 

1줄 요약 :

centos:centos7 이미지 사용

 

 

요약:

CentOS 8 의 지원이 종료되었기 때문이다.

End Of Life가 남아있는 다른 버전을 사용하면 해결된다.

 

CentOS 7 의 지원기간은 2024년 6월까지이며

CentOS Stream 9 가 최신 CentOS 버전이다.

(신형 CentOS 는 뒤에 'Stream' 태그가 붙는다)

 

 

 

 

1. 리눅스 마스터 2급의 문제의 기준이 CentOS 이기 때문에

 

실습용으로 CentOS 도커 컨테이너를 띄웠다.

도커 이미지는 경량화되어 있기 때문에

출제 범위 안에 들어가는 대다수의 리눅스 명령어가 설치되어 있지 않다.

설치를 위해 yum 명령어를 사용하면

 

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

 

에러가 발생한다.

 

 

 

 

 

2. 도커 허브의 CentOS latest 버전은 CentOS 8 이다.

 

그러나 8 버전은 2021년 12월 31일로 지원이 종료되었으며

현재 심각한 보안 문제를 안고 있다고 한다.

yum 레파지토리도 더 이상 지원하지 않는다.

 

운영 중인 yum 레파지토리를 다시 연결하는 방법도 있지만

End Of Life가 남아있는 다른 버전을 사용하는 쪽이 훨씬 간편하다.

 

(CentOS 8 지원 종료 안내 링크)

https://www.centos.org/centos-linux-eol/

 

 

 

 

 

3. 선택할 수 있는 대안 옵션

 

1) CentOS 7 

지원 종료: 2024년 6월 30일

docker 명령어에 centos 대신 centos:centos7 로 교체

 

 

2) CentOS Stream 9 (최신 버전)

최신 버전인 CentOS Stream 9 는 도커 허브에서 이미지를 제공하지 않는다.

대신 공식 홈페이지에서 사설 도커 레파지토리를 통한 이미지  pull 링크를 제공한다.

 

CentOS 공식 download 링크

https://www.centos.org/download/

 

상단 메뉴에서 CentOS Stream -> 9 를 차례로 선택하고

아키텍처에 맞는 버전의 Containers 버튼을 누르면

quay.io 레파지토리 사이트의 centos 페이지로 이동한다.

 

https://quay.io/repository/centos/centos?tab=tags&tag=stream9

 

 

선택되어있는 이미지의 가장  오른쪽 Fetch Tag 를 클릭하면

CentOS Stream 9 의 도커 이미지를 받을 수 있는 커맨드를 얻을 수 있다.

 

(캡쳐) CentOS Stream 9 docker pull 명령어 안내

 

명령어는 다음과 같으며 터미널에 입력하면 Stream 9 이미지를 내려받는다.

 

docker pull quay.io/centos/centos:stream9

 

 

3) Redhat 계열의 다른 lunux 컨테이너 사용

 

CentOS 의 대안 리눅스로는 Alma linux, Rocky linux, Oracle linux 등이 거론된다.

모두 도커 오피셜 이미지를 제공한다.

 

 

 

 

 

4. 도커 컨테이너 생성 명령어 예시

 

 

 

옵션 설명

-i -t : 상호 입출력. 터미널 사용을 위한 옵션.

--privileged=true : 높은 권한으로 컨테이너 실행. ssh 외부 접속 설정을 위해서는 높은 권한 실행이 필요.

--name myCentOS7 : 컨테이너 이름. 변경, 생략 가능.

-v /Users/folaflor/myCentOS7home:/home : 공유할 볼륨 경로. : 기준으로 앞이 로컬 볼륨 경로, 뒤가 컨테이너 내부 경로. 변경/생략 가능.

-p 44983:22 : 개방 포트 설정. 외부에서 44983 포트로 접근하면 컨테이너의 22번 포트로 연결 (ssh 포트: 22). 변경, 생략 가능.

centos:centos7 : 컨테이너의 베이스 이미지 이름. 다른 리눅스 이미지를 원할 경우 교체. 

 

 

 

 

댓글