컨테이너 시작시 error while creating mount source path '/host_mnt/Users/~': mkdir/host_mnt/Users/~: file exists가 되었을 때의 대처법

5347 단어 docker-compose도커

현상


volumes를 설정하고 있는 컨테이너(MySQL용)를 정지 → 기동한 곳
htps // qr. 파 ypa y. 네. jp / 아루 m 펜은 hPrpK
$ docker-compose up -d
Creating volume "sample_db-store" with default driver
Creating sample_db_1 ... error

ERROR: for sample_db_1  Cannot start service db: error while creating mount source path '/host_mnt/Users/~/docker/mysql/sql': mkdir /host_mnt/Users/~/docker/mysql/sql: file exists
ERROR: Encountered errors while bringing up the project.
"호스트 디렉토리를 마운트 할 수 없다"는 오류 메시지가 표시되고 컨테이너를 시작할 수 없습니다.

운영 환경


    해결 방법 Docker Desktop for Windows를 사용하는 경우 Docker Desktop for Windows → [Settings] → [Shared Drives] → [Reset Credentials] → 재인증(해당 경로 확인) [참고] htps //w w. 박제 ts. jp / 엔트리 / 드 c 케 루 푸우 루 우드 ws mk ぢ r

Mac용 Docker Desktop을 사용하는 경우


Mac용 Docker Desktop → [preferences...] → [Resources] → [File Sharing]
/Users를 지운 후 [apply & Restart]
그런 다음/Users를 추가하고 [apply & Restart]

해결하기 전에 시도한 것


동작 배경


docker-compose로, 다음과 같이 MySQL의 컨테이너를 구축하고 있었다.

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/mysql/sql:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}
    ports:
      - ${DB_PORT}:3306
volumes: db-store

volumes에는 data, log 주위에 관한 것 외에도

docker-compose.yml
 - ./docker/mysql/sql:/docker-entrypoint-initdb.d

정의합니다.
MySQL용 이미지에서는 /docker-entrypoint-initdb.d 에 마운트할 때, 지정한 호스트측의 디렉토리에 존재하는 .sql , .sh 파일을, 컨테이너 최초의 기동시에 읽어들여 실행해 준다.
htps // // 후 b. 두 c r. 이 m/_/mysql/
그 때문에, 컨테이너에 마운트 하는 호스트측의 디렉토리 ./docker/mysql/sql에, 테이블 작성용의 SQL와 SQL 실행용의 쉘 스크립트를 두고 있었다. 처음 시작할 때 문제없이 작동. 사이에 둔 SQL과 쉘 스크립트도 문제없이 달리고 있었다.
그러나 한 번 컨테이너를 docker-compose stop에서 중지 한 후 docker-compose up에서 시작할 때이 현상이 발생했습니다.

시도한 것 ①: 볼륨 삭제


조사하고 있는 것과 유사한 거동이 볼륨 삭제에 의해 해결할 수 있다는 정보를 발견했기 때문에 컨테이너와 명명된 볼륨을 삭제해 보았다.
$ docker-compose down --volumes

Removing sample_db_1    ... done
Removing volume sample_db-store

$ docker-compose up -d
실패.

시도한 것②: Docker Desktop for Mac의 공유 폴더 자격 증명 업데이트(이번 해결 방법)


비슷한 Docker Daemon 오류
docker: Error response from daemon: error while creating mount source path '/host_mnt/c/tmp': mkdir /host_mnt/c: file exists.
하지만 Docker Desktop for Windows를 사용하는 경우에 보고된 것으로 나타났습니다.
그러나 Mac 용 Docker Desktop에서 유사한 오류가 발생했다고보고되지 않았습니다.
안돼 원래, Windows와 조금 흐름은 다르지만 Docker Desktop for Mac에서 위의 에러의 해결법을 모방해 보았더니, 움직였다.

원인


아마도 Docker Desktop Volumes 공유 설정에 문제가 발생했고 호스트 측 디렉토리 정보에 액세스 할 수 없었던 것이라고 생각합니다. 자세한 내용은 알 수 없습니다.
근본 원인에 대해 알고 계시다면 알려주세요

좋은 웹페이지 즐겨찾기