IT TIP

Docker : 마운트가 거부되었습니다.

itqueen 2020. 10. 24. 12:09
반응형

Docker : 마운트가 거부되었습니다. 경로는… OS X에서 공유되지 않으며 Docker에 알려지지 않았습니다.


이 명령 docker run -v /var/folders/zz/...은 다음 오류를 생성합니다.

docker: Error response from daemon: Mounts denied: 
The paths /var/folders/zz/... and /var/folders/zz/...
are not shared from OS X and are not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.

파일 공유를 열면 / private가 이미 나열되어 있습니다.

내가 추가하려고하면 /var/folder/, 그것은에 해결 /private/var/folders의 / 개인 따라서 또한이 거부되는 부분 집합이다.

요약하면 /var/folders/..OS X 에서 디렉토리 가 하위 디렉토리 로 공유 /private되므로 Docker에 알려야 하는 것처럼 보입니다 . 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.

실험 /private으로 파일 공유 /private/var/folders에서을 (를) 대체 하고 도커를 다시 시작했지만 결과는 변경되지 않았습니다.

보다 완전한 참조를 위해 이것은이 python 스크립트 를 실행 하는 .sh 스크립트 이고, 차례로 docker 명령을 실행합니다.


Mac 용 Docker 볼륨 마운트는 기본 Docker 시스템과 다르게 작동합니다. 이는 Docker가 Apple의 파일 시스템 샌드 박스 지침을 준수하려고하기 때문입니다.

Docker의 환경 설정에 표시된 것처럼 macOS에서는 특정 경로 만 내 보냅니다.

  • /Users
  • /Volumes
  • /tmp
  • /private

파일 공유 환경 설정 패널

/varmacOS에서는 /private. 다음의 경우에도 마찬가지입니다 /tmp.

$ ls -ld /tmp /var
lrwxr-xr-x@ 1 root  wheel  11 Jan 26 16:18 /tmp -> private/tmp
lrwxr-xr-x@ 1 root  wheel  11 Jan 26 16:18 /var -> private/var

/tmp공유 패널에이 표시되지만 표시 /var되지 않는 이유는 무엇입니까 (둘 다의 일부 임에도 불구하고 /private)? 파일 시스템 네임 스페이스에 대한 Mac 용 Docker 설명서 는 다음을 설명합니다.

기본적으로 파일을 공유 할 수 있습니다 /Users/, /Volumes/, /private/,와 /tmp직접. Docker로 내 보낸 디렉토리 트리를 추가하거나 제거하려면 Docker 환경 설정 고래 메뉴-> 환경 설정-> 파일 공유에서 파일 공유 탭을 사용하십시오. (기본 설정을 참조하십시오.)

-v바인드 마운트에 사용되는 다른 모든 경로 는 Docker 컨테이너를 실행하는 Moby Linux VM에서 제공되므로과 같은 인수 -v /var/run/docker.sock:/var/run/docker.sock가 예상대로 작동해야합니다. macOS 경로가 공유되지 않고 VM에 존재하지 않는 경우 마운트를 바인딩하려는 시도가 VM에서 생성되지 않고 실패합니다. VM에 이미 존재하고 파일을 포함하는 경로는 Docker에 의해 예약되어 있으며 macOS에서 내보낼 수 없습니다.

참고 /var/run특별히 대신 맥 OS에서의 리눅스 VM에서 설치 될 장소로 여기에 언급되어있다.

볼륨 마운트를 요청하면 macOS 파일 시스템 내보내기가 먼저 확인됩니다. 일치하는 항목이 없으면 Docker가 실행중인 Linux VM이 다음에 확인됩니다. 둘 다 요청한 경로가 없으면 마운트가 실패합니다.

귀하의 경우에는 /varmacOS로 내보내지지 않습니다. /varLinux VM에는 있지만 /var/folders그렇지 않습니다. 따라서 경로를 사용할 수 없으며 마운트가 실패합니다.

경로를로 변경하면 /private/varmacOS /private가 마운트를 위해 전체 파일 시스템 트리를 내보내므로 성공 합니다.

좀 더 이식하기 위해 현재 실행중인 플랫폼을 테스트하고 macOS 인 경우 마운트 경로 앞에 /private.


예를 들어 Portainer를 사용하면이 명령이 저에게 효과적입니다.

docker run -d --restart unless-stopped -p 9000:9000 \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v /var:/data portainer/portainer --no-auth

그러나 전혀 변경하면 -v /var:/data작동하지 않습니다. Docker가 mkdir을 시도하기 때문에 (확실하지 않습니다) 생각합니다. 따라서 마운트를 시도 -v /var/whatever:/data하면 권한이 충분하지 않아 mkdir이 실패하고 작동하지 않습니다.

저는 2 대의 Mac (High Sierra)을 가지고 있고 둘 다 사용해 보았습니다. 같은 문제입니다. 또한 Docker Beta 채널을 사용해 보았습니다. 나는 Dan Lowe의 대답을 이해한다고 생각합니다. 저에게 효과가 있다면이 대답을 업데이트하겠습니다.

참고 URL : https://stackoverflow.com/questions/45122459/docker-mounts-denied-the-paths-are-not-shared-from-os-x-and-are-not-known

반응형