질문
그래서... 저는 다음을 제외하고 다양한 명령을 테스트했습니다.
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
여기에는 몇 가지 질문이 있습니다.
스냅샷 도커
docker
in 버전은 snap
protected 입니다 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의 하위 명령입니다.