programing

마운트가 거부되었습니다.... 경로는 OS X에서 공유되지 않으며 도커에서 알 수 없습니다.

stoneblock 2023. 9. 21. 20:04

마운트가 거부되었습니다.... 경로는 OS X에서 공유되지 않으며 도커에서 알 수 없습니다.

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.

File Sharing(파일 공유)을 열면 /private(비공개)가 이미 나열되어 있습니다.

/var/folder/로 해결됩니다. 합니다./private/var/folders가 거부됩니다. , /private 의됩니다.

가 보기에는 하자면라는 ./var/folders/..OS X다의 하위 합니다./private그러니 도커에게 알려져야 합니다.이 문제를 해결하는데 어떤 도움이라도 주시면 감사하겠습니다.

했습니다를 했습니다./private/private/var/folders그리고 도커를 다시 시작했지만 결과는 바뀌지 않았습니다.

좀 더 자세한 참조를 위해, 이것은 python 스크립트를 실행하는 .sh 스크립트이며, 이것은 다시 도커 명령을 실행합니다.

Mac용 도커 볼륨 마운트는 기본 도커 시스템과 다르게 동작합니다.도커가 애플의 파일시스템 샌드박스 가이드라인을 준수하려 하기 때문입니다.

도커의 기본 설정에서 알 수 있듯이 특정 경로만 macOS로 내보냅니다.

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

File Sharing preference panel

/var에서 macOS는 macOS에 입니다./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용 도커의 설명서에서 다음과 같이 설명합니다.

할 수 ./Users/,/Volumes/,/private/,그리고./tmp직접적으로. 디렉토리 를 추가 고래 ->>파일 합니다.도커로 내보내는 디렉토리 트리를 추가하거나 제거하려면 도커 기본 설정 고래 메뉴 -> 기본 설정 -> 파일 공유의 파일 공유 탭을 사용합니다.(환경설정 참조).

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

:/var/run여기서는 macOS 대신 Linux VM에서 마운트되는 장소로 특별히 언급합니다.

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

당신 같은 경우엔/var macOS./var VM에는 있습니다/var/folders하지 않다. 를 사용할 수 가 실패합니다따라서 경로를 사용할 수 없고 마운트가 실패합니다.

/private/var가 macOS 입니다 /private마운트를 위한 파일 시스템 트리.

에 하고 macOS 를 로 붙입니다./private.

사전 요청: 'docker desktop'을 설치해야 합니다. 이미지에 언급된 단계를 따릅니다.

새로운 버전의 맥용 도커 3.0.0에서는 Preferences>에서 파일 공유에 gRPC FUSE를 사용하지 않도록 설정해야 합니다.실험적 특징.

디렉토리를 ./var/tmp내 도커 컨테이너에 장착하고 싶었던 내 맥에.

다음과 같이 디렉토리 경로를 파일에 추가하여 해결하였습니다.

$ cat ~/Library/Group\ Containers/group.com.docker/settings.json  
{
  "filesharingDirectories" : [
    "\/Users",
    "\/Volumes",
    "\/private",
    "\/tmp",
    "\/var\/tmp"
  ],
…

이제 나는 그 디렉토리를 볼 수 있었습니다./var/tmp도커->환경설정->자원->파일 공유에서.그런 다음 도커를 다시 가동시켰습니다.

그 후 장착 문제가 해결되었습니다.

대안적 해결책으로:

:/private/instance1-data:/home../instance1-data:/home

* 에서, , ,.현재 디렉터리를 나타냅니다.macOS에,은 macOS를 위한 다에 하면 됩니다.instance1동일한 디렉토리에

이 또은 입니다를 입니다.docker-compose와 함께sudo이 않지만 이 있습니다 어쨌든 이 경우에는 해가 되지 않지만 그래도 이점이 있습니다.

버전 20을 제거하고 이전 버전을 다운로드합니다. https://desktop.docker.com/mac/stable/48506/Docker.dmg

최신 버전(Docker 3.0.2)에서는 macos에서 다음과 같은 읽기 도커에 대한 디렉토리를 허용해야 합니다.

enter image description here

예를 들어 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전혀, 효과가 없을 겁니다.나는 도커가 mkdir를 하려고 하기 때문이라고 생각합니다.제가 하면면.-v /var/whatever:/data는 사용 mkdir 는.

맥(하이 시에라) 2개 있는데 둘 다 입어봤어요.똑같은 문제.그리고 도커 베타 채널을 사용해 보았습니다.Dan Lowe의 대답을 이해한다고 생각합니다. 저는 그것이 저에게 적합하다면 이 대답을 업데이트하겠습니다.

업데이트:

이제 이거 됩니다.참고: /var/tmp에 대한 권한을 허용하도록 도커를 구성했습니다.

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

MAC에서 이 문제가 계속 발생하는 경우 $PWD를 추가해 보십시오.

로컬 파일 디렉토리 경로 앞에 $PWD를 추가합니다. 도커 run -v $PWD/folders/:/path/to/directory.

mac에서 숨겨진 폴더를 볼 수 없는 경우 터미널을 열고 다음을 입력합니다.

기본값은 write com.apple입니다.검색기 Apple모든 파일 표시 YES

그런 다음 finder에서 alt와 오른쪽 클릭(손가락 두 개)을 눌러 finder를 다시 시작하고 relaunch를 선택한 다음 메뉴 바의 파일 옆에 있는 "finder"를 클릭합니다.기본 설정 클릭 바탕 화면에 이 항목 표시 아래에 하드 디스크에 체크를 추가한 다음 사이드바도 하드 디스크를 확인한 다음 숨겨진 폴더로 이동하여 즐겨찾기로 끌어가면 도커> 기본 설정> 리소스> 파일 공유> + 창에 나타납니다.

도커 환경설정에서 파일 공유에서 프로젝트 경로를 제거하고 도커를 다시 시작한 다음 프로젝트 파일 경로를 다시 추가하면 문제가 해결됩니다.

문제를 해결하려면 /private/var/tmp 및 /var/tmp를 모두 추가해야 합니다.

내 쪽에서: 폴더를 추가한 후 터미널과 도커를 모두 다시 시작하면 내 쪽에서 문제가 해결되었습니다.

합니다./builds.filesharingDirectories인에~/Library/Group\ Containers/group.com.docker/settings.json:,:

"filesharingDirectories": [
    "/builds",
    "/host_mnt",
    "/tmp",
    "/Users",
    "/Volumes",
    "/private",
    "/var/folders"
  ],

(저도 추가했습니다.host_mnt)

두 를 했습니다./g/etc/synthetic.conf:

mkdir -p /Users/me/gitlab-misc/builds
mkdir -p /Users/me/gitlab-misc/host_mnt
sudo vim /etc/synthetic.conf

/etc/synthetic.conf내가 가지고 있습니다.

builds  /Users/me/gitlab-misc/builds
host_mnt    /Users/me/gitlab-misc/host_mnt

(공백이 아닌 TAB 사용)

sudo chmod 0644 /etc/synthetic.conf
sudo chown root:wheel /etc/synthetic.conf

그리고 기계를 재부팅합니다.

도커에 이미 추가된 경로가 있다는 것을 덧붙이고 싶지만, 바인딩 마운트를 상대적인 것이 아니라 절대적인 것으로 손가락질하여 존재하지 않는 파일을 가리키고 있었습니다.OP와 같은 오류가 발생했습니다.

.env 파일이 있는 경우 잘못된 경로를 포함할 수 있으므로 BASE_PATH 상수를 두 번 확인합니다.

# System Configuration
BASE_PATH=/Users/<your_OS_user>/Projects

저 같은 경우는 그 정도였습니다.

https://docs.docker.com/desktop/settings/mac/ #파일공유볼륨:하나는 현재 컴퓨터를, 다른 하나는 도커의 컨테이너를, 도커의 설정 파일에서 /Users는 파일 공유를 위해 도커의 설정에 이미 설정되어 있고, Mac에서는/사용자는 컴퓨터에서 거의 모든 파일을 찾을 수 있습니다.

넷코어 앱의 경우 공유 /usr/local/share/가 있는지 확인합니다.

언급URL : https://stackoverflow.com/questions/45122459/mounts-denied-the-paths-are-not-shared-from-os-x-and-are-not-known-to-docke