
docker-compose.yml
다음 을 사용하여 볼륨 마운트(버전 3.7 사용)를 설정하는 내 파일의 다음 YAML 코드를 고려해보세요.짧은 형식 구문문서에 지정된 대로:
volumes:
- ./logging:/var/log/cron
logging
이는 내 호스트 컴퓨터의 상대 경로를 /var/log/cron
컨테이너 내부의 폴더에 매핑합니다. 를 실행할 때 호스트 컴퓨터에 폴더가 없으면 Docker가 해당 폴더를 만듭니다 docker-compose up
. logging
거기 다 괜찮아요.
이제 위의 내용을 다음과 같이 변경하면긴 형식의 구문:
volumes:
- type: bind
source: ./logging
target: /var/log/cron
이제 실행하면 호스트 컴퓨터에 폴더가 없으면 폴더가 docker-compose up
생성되지 않습니다 . logging
나는 얻다
Cannot create container for service app: b'Mount denied:\nThe source path "C:/Users/riptusk331/logging"\ndoesn\'t exist and is not known to Docker'
짧은 형식 구문은 존재하지 않는 경우 호스트 경로를 생성하지만 긴 형식은 그렇지 않고 오류가 발생하는 이유를 아는 사람이 있습니까?
Windows용 Docker Desktop을 사용합니다.
답변1
-v
이것은 실제로 사람들이 해당 동작에 의존하여 만든 수천(수백만?) 개의 구현을 모두 손상시킬 수 있기 때문에 수정하고 싶지 않은 이전 구문의 "기능"(버그)이었습니다 .
Docker Swarm에 도입된 후 원래 Docker CLI 호출과 호환되도록 확장된 최신 --mount
볼륨 구문은 실제로 문서화되지 않았고 의존해서는 안 되는 "예기치 않은 마법"이었기 때문에 이 기능을 명시적으로 다시 도입하지 않았습니다. .