Linux Docker가 개인 gcr.io에서 파일을 다운로드하지 못하는 이유는 무엇입니까?

Linux Docker가 개인 gcr.io에서 파일을 다운로드하지 못하는 이유는 무엇입니까?

질문

그래서... 저는 다음을 제외하고 다양한 명령을 테스트했습니다.

docker pull gcr.io/...

항상 권한이 부족하다고 나옵니다.

오류: 인증되지 않음: 이 작업을 수행하는 데 필요한 권한이 없으며 자격 증명이 유효하지 않을 수 있습니다. 요청을 확인하려면 다음 단계를 따르세요.https://cloud.google.com/container-registry/docs/advanced-authentication

왜 그럴까요?

kubectl ...똑같은 승인이 필요한 명령어를 실행할 수 있으므로 Google Cloud에 올바르게 로그인했다고 100% 확신합니다.

내 환경

주인

나는 amd64에서 Linux Ubuntu(현재 22.04)를 실행하고 있습니다.

손님

여러 가지 이유로 이 머신에서 가상 머신을 실행해야 합니다. 그래서 VirtualBox VM에서 실행되는 또 다른 Ubuntu 22.04를 설치했습니다. 위에서 언급했듯이 모든 것이 잘 작동합니다.

루스트어바웃

현재 docker는 snap버전 20으로 설치되어 있습니다.

노트:패키지가 업데이트되지 않아 매우 오래되었기 때문에 기본 apt-get 패키지를 사용할 수 없습니다.

실패한 명령은 다음과 같습니다.

docker pull gcr.io/<path>/<to>/<file>:main-123456

답변1

여기에는 몇 가지 질문이 있습니다.

스냅샷 도커

dockerin 버전은 snapprotected 입니다 apparmor.

마침표로 시작하는 하위 디렉터리에서 파일(여러 개?)을 읽어야 하기 때문에 인증에 실패했습니다(예: .docker/...파일이 에서 인증되었음에도 불구하고 apparmor).

질문에서 언급했듯이 이전 버전에서는 문제가 해결되지 않습니다. 그래서 우리에게는 새로운 것이 남았습니다.도커 데스크탑대신 버전.

도커 데스크탑

(설치, 시작 및 사용에 대한 아래 참고 사항을 참조하십시오)

Docker Desktop은 새로운 짐승입니다. 보안 기능이 더 많아 어떤 면에서는 좋지만 더 많은 리소스가 사용된다는 점에서 짜증스럽습니다. 특히 컴퓨터의 VM 기능을 사용하여 docker를 실행합니다. 이는 루트로 실행될 수 있는 환경을 격리하는 좋은 방법입니다.

여기서 또 다른 문제가 발생합니다!이미 가상 머신에서 실행 중인 경우 게스트가 직접 가상 머신을 생성하지 못할 가능성이 높습니다.중첩됨가상 기기. 가상 머신이 중첩된 가상 머신을 생성할 권한이 있는지 확인하지 않으면 이 작업은 실패합니다. VirtualBox에는 특별히 이 목적을 위해 인터페이스에서 조정할 수 있는 옵션이 있습니다.

다음은 기본값(즉, 인증되지 않음)을 보여주는 스크린샷입니다.Nester VT-x/AMD-V 활성화로고가 선택되었습니다. 선택되어 있지 않으면 가상 머신을 종료하고 확인란을 선택한 후 가상 머신을 다시 시작해야 합니다.

여기에 이미지 설명을 입력하세요.


추가 지침

스냅 제거

먼저 스냅을 제거해야합니다. 이는 다음을 사용하여 수행됩니다.

snap remove docker

경고하다:Docker는 Docker를 다시 설치할 때 복원하려는 경우를 대비해 기존 컨테이너와 이미지를 완전히 백업합니다. 대부분의 컨테이너는 매우 큰 파일이므로 시간이 오래 걸릴 수 있습니다. 잠시 시간을 내어 다음 항목을 먼저 삭제하는 것이 좋습니다.

$ docker ps -a
$ docker rm <container-id>
$ ...repeat until `docker ps -a` returns an empty list...
$ docker images
$ docker rmi <image-id>
$ ...repeat until `docker images` returns an empty list...

노트:를 사용하여 일부 이미지를 삭제 해야 할 수도 있습니다 --force. 우리는 모든 것을 제거하고 있기 때문에 당연히안전한.

데스크톱 Docker 설치

이 버전을 직접 설치할 수 있다고 가정합니다. Ubuntu에 대한 지침은 여기에서 찾을 수 있습니다.

https://docs.docker.com/desktop/install/ubuntu/#install-docker-desktop

노트:일반 PPA와 달리 .deb을 직접 설치하는 것은 허용되지 않습니다 .deb. 대신 .deb를 "수동으로" 다운로드하여 설치해야 합니다. 그런 다음 필요한 모든 종속성 등을 수집합니다. 나에게 묻는다면 이상하다.

활성화/활성화

설치가 완료되면 실행할 수 있습니다. 내 경우에는 다음을 사용했습니다.

$ systemctl --user enable docker-desktop
$ systemctl --user start docker-desktop

처음에 안되면 몇번 더 시도해보세요...

사용자 도커

데스크톱 창이 열려 있고 스핀 휠로 "Docker 시작"이라고 말하지 않으면 Docker가 실행되고 있으며 셸에 명령을 입력할 수 있습니다.

docker pull gcr.io/<path>

이것이 매력처럼 작용할 것으로 기대하십시오.

참고 사항: 이 docker-compose명령은 이제 docker compose대시가 없으므로 별도의 도구가 아닌 docker의 하위 명령입니다.

관련 정보