programing

윈도우에서 도커 mongo 이미지를 시작할 수 없습니다.

bestprogram 2023. 6. 21. 22:51

윈도우에서 도커 mongo 이미지를 시작할 수 없습니다.

이미지를 시작할 때 다음 오류가 발생합니다.

 2019-02-27T17:09:41.095+0000 E STORAGE  [initandlisten] WiredTiger error (17) [1551287381:95206][1:0x7fae36fc4a40], connection: __posix_open_file, 715:
/data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1551287381:95206][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists
2019-02-27T17:09:41.108+0000 I STORAGE  [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.6
2019-02-27T17:09:41.111+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1551287381:111166][1:0x7fae36fc4a40], connection: __posix_open_file, 715:
/data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1551287381:111166][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
2019-02-27T17:09:41.149+0000 E STORAGE  [initandlisten] WiredTiger error (17) [1551287381:149030][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1551287381:149030][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists
2019-02-27T17:09:41.153+0000 I STORAGE  [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.7
2019-02-27T17:09:41.156+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1551287381:156133][1:0x7fae36fc4a40], connection: __posix_open_file, 715:
/data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1551287381:156133][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
2019-02-27T17:09:41.177+0000 E STORAGE  [initandlisten] WiredTiger error (17) [1551287381:177375][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1551287381:177375][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists
2019-02-27T17:09:41.192+0000 I STORAGE  [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.8
2019-02-27T17:09:41.194+0000 E STORAGE  [initandlisten] WiredTiger error (1) [1551287381:194762][1:0x7fae36fc4a40], connection: __posix_open_file, 715:
/data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1551287381:194762][1:0x7fae36fc4a40], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
2019-02-27T17:09:41.200+0000 W STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
2019-02-27T17:09:41.200+0000 F STORAGE  [initandlisten] Reason: 1: Operation not permitted
2019-02-27T17:09:41.201+0000 F -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 704

.env 폴더 값은

MONGO_SAVE_PATH=./database/db

DB 도커 파일:

FROM mongo:latest
VOLUME ["/data/db"]
WORKDIR /data
EXPOSE 27017
CMD ["mongod"]

docker-compose.yml DB 컨테이너

services:
  my-mongo-db:
  build: ./database
  ports:
   - 32815:27017
  volumes:
- ./database/db:/data/db

이걸 어떻게 고쳐야 할지 모르겠어요.그러나 Linux 및 Mac에서는 이 문제가 나타나지 않습니다.

경고(Windows 및 OS X):윈도우즈 및 OS X의 기본 도커 설정에서는 VirtualBox VM을 사용하여 도커 데몬을 호스팅합니다.안타깝게도 VirtualBox가 호스트 시스템과 Docker 컨테이너 간에 폴더를 공유하는 데 사용하는 메커니즘이 MongoDB에서 사용하는 메모리 매핑 파일과 호환되지 않습니다(vbox 버그, docs.mongodb.org 및 관련 jira.mongodb.org 버그 참조).즉, 호스트에 매핑된 데이터 디렉토리로 MongoDB 컨테이너를 실행할 수 없습니다.

도커 몽고 깃허브의 답변

데이터 유지를 위한 해결 방법:

docker volume create --name=mongodata
docker run -d -p 27017:27017 -v mongodata:/data/db --name=mymongo mongodb:3.3

자세한 내용은 여기에 있습니다.

도커 합성을 사용하는 경우 위의 답변을 복제하는 방법은 다음과 같습니다.

services:
  mongodb_container:
    ...
    volumes:
      - mongodata:/data/db
volumes:
  mongodata:

위의 샘플은 mongodb 저장소에 필요한 yml 파일의 일부만 나타냅니다.

비록 오거스타스가 옳지만, 저는 이 대답이 특히 유용하다는 것을 알았습니다.docker-compose.yml.

해결 방법은 다음과 같습니다.

  1. 작성.env같은 경로에 있는 파일docker-compose다음과 같은 환경 변수에 현재 경로를 파일로 저장합니다.
MONGO_HOST_DATA=/Users/user123/MyMongoProject //path to mongo data folder (for C:\Users\user123\MyMongoProject)
  1. 이제, 당신의docker-compose파일, 위에서 언급한 변수를 바꿉니다.
    services:
      my-mongo-db:
      build: ./database
      ports:
       - 32815:27017
      volumes:
    - ${MONGO_HOST_DATA}/database/db:/data/db
  • 실제 경로가 환경 변수를 어떻게 대체했는지 확인하려면 다음 명령을 사용할 수 있습니다.
docker-compose config

또한 C:\ 이외의 디스크 드라이브를 사용하는 경우 Docker 파일 공유 설정을 변경할 수 있습니다.

Windows Docker settings window

이게 도움이 되길 바랍니다.

저는 WSL2에서 Mongo를 실행하는 동안 NTFS 권한으로 인해 이 문제가 발생했습니다.ext4(WSL 파티션)로 이동하여 수정되었습니다.

완전히 같은 문제는 아니지만 Ubuntu에서 mongo용 도커 컨테이너를 회전시키고 기존 디렉터리를 컨테이너에 마운트하려고 시도했을 때 동일한 오류 메시지를 보았습니다.

docker run --name some-mongo -p 27017:27017 -v $PWD/db-data:/data/db -d mongo

이 경우 오류는 마운트된 HDD의 디렉토리에서 명령을 실행하려고 할 때만 나타나고 /db-data 디렉토리가 있는 코드베이스를 Ubuntu가 설치된 SSD로 마이그레이션하여 해결할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/54911021/unable-to-start-docker-mongo-image-on-windows