도커 Mongo 데이터 볼륨 설정 방법
Dockerizing MongoDB를 사용하여 로컬 볼륨에 데이터를 저장하고 싶습니다.
하지만.. 실패했어...
정말 그랬어요.mongo:latest
이미지들
kerydeMacBook-Pro:~ hu$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mongo latest b11eedbc330f 2 weeks ago 317.4 MB
ubuntu latest 6cc0fc2a5ee3 3 weeks ago 187.9 MB
모노 데이터를 저장하고 싶다.~/data
그래서...
kerydeMacBook-Pro:~ hu$ docker run -p 27017:27017 -v ~/data:/data/db --name mongo -d mongo
f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43
하지만... 소용없어...
도커 ps -- 데몬 mongo 없음
kerydeMacBook-Pro:~ hu$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
"mongo" --mongo를 실행하려고 합니다.
kerydeMacBook-Pro:~ hu$ docker exec -it f57 bash
Error response from daemon: Container f57 is not running
도커 검사 몽고
kerydeMacBook-Pro:~ hu$ docker inspect mongo
[
{
"Id": "f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43",
"Created": "2016-02-15T02:19:01.617824401Z",
"Path": "/entrypoint.sh",
"Args": [
"mongod"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 100,
"Error": "",
"StartedAt": "2016-02-15T02:19:01.74102535Z",
"FinishedAt": "2016-02-15T02:19:01.806376434Z"
},
"Mounts": [
{
"Source": "/Users/hushuming/data",
"Destination": "/data/db",
"Mode": "",
"RW": true
},
{
"Name": "365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a",
"Source": "/mnt/sda1/var/lib/docker/volumes/365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a/_data",
"Destination": "/data/configdb",
"Driver": "local",
"Mode": "",
"RW": true
}
],
데이터 볼륨을 설정하지 않으면 mongo 이미지가 동작합니다!
그러나 데이터 볼륨을 설정할 때는 설정할 수 없습니다.누가 나를 도울수 있을까?
도커 로그를 확인하여 컨테이너가 정지했을 때 무슨 일이 일어났는지 확인하고 "Existed" 모드로 전환합니다.
볼륨의 풀 패스를 지정하는 것이 도움이 되는지도 참조해 주세요.
docker run -p 27017:27017 -v /home/<user>/data:/data/db ...
OP는 다음을 추가합니다.
docker logs mongo
exception in initAndListen: 98
Unable to create/open lock file: /data/db/mongod.lock
errno:13 Permission denied
Is a mongod instance already running?
terminating 2016-02-15T06:19:17.638+0000
I CONTROL [initandlisten] dbexit: rc: 100
이 코멘트는 다음과 같습니다.
이 문제는 파일 소유권/허가 문제(이 도커 이미지와 관련이 없음)로, VB를 사용하는 boot2docker 또는 VB를 사용하는 vagrant box 중 하나입니다.
그럼에도 불구하고 소유권을 해킹하여 boot2docker 내의 /Users 공유 볼륨을 uid 999 및 gid 999(mongo docker 이미지가 사용하는 것)에 다시 마운트하여 시작하도록 했습니다.
$ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users
그러나... 지원되지 않는 파일 시스템 유형으로 인해 mongod가 크래시됨(vboxsf에서는 mmap이 작동하지 않음)
따라서 실제 솔루션은 DVC: Data Volume Container를 사용해 보는 것입니다.현시점에서는 mongodb 문서에 다음과 같은 내용이 기재되어 있습니다.
MongoDB에는 다음 기능을 지원하는 파일 시스템이 필요합니다.
fsync()
디렉토리에 있습니다.
예를 들어 HGFS 및 Virtual Box의 공유 폴더는 이 작업을 지원하지 않습니다.
그래서:
가상 박스 공유 폴더는 동작하기 때문에 MongoDB에서는 OSX에 마운트할 수 없습니다.
DVC(데이터 볼륨 컨테이너)의 경우는, 다음의 순서에 따릅니다.
docker volume create mongodbdata
다음으로 다음과 같이 사용합니다.
docker run -p 27017:27017 -v mongodbdata:/data/db ...
그리고 그게 더 잘 먹힐지 봐.
댓글에서 언급했듯이:
A docker volume inspect mongodbdata
(을 참조) 경로가 표시됩니다(필요한 경우 백업 가능).
도커별 문서 수:
볼륨은 도커 컨테이너에 의해 생성되어 도커 컨테이너에 의해 사용되는 데이터를 유지하는 데 선호되는 메커니즘입니다.
docker volume create mongodbdata
docker run -p 27017:27017 -v mongodbdata:/data/db mongo
도커 구성 경유:
version: '2'
services:
mongodb:
image: mongo:latest
volumes:
- ./<your-local-path>:/data/db
/data/db
컨테이너에 저장된 데이터의 위치입니다.
<your-local-path>
는 실제 데이터베이스 저널파일이 저장되는 호스트머신 AKA 상의 위치입니다.
Windows 상에서 MongoDB 컨테이너를 실행하고 있는 모든 사용자:여기서 설명한 바와 같이 Windows 호스트에서 MongoDB 컨테이너로 볼륨을 마운트할 때 문제가 발생합니다(이것을 Path라고 부릅니다).local volume
를 참조해 주세요.
할 수 .Docker volume
관리되는 (도커에 의해 관리됨):
docker volume create mongodata
★★★★★★★★★★★★★★★★★docker-compose
★★★★★★★★★★★★★★★★★★★★:
version: "3.4"
services:
....
db:
image: mongo
volumes:
- mongodata:/data/db
restart: unless-stopped
volumes:
mongodata:
Windows 10에서 테스트하여 동작
링크를 찾았습니다.가상 박스 공유 폴더는 mongodb에서 지원되지 않습니다.
언급URL : https://stackoverflow.com/questions/35400740/how-to-set-docker-mongo-data-volume
'programing' 카테고리의 다른 글
React 함수 구성 요소 또는 사용자 지정 React Hook 함수가 아닌 함수 "app"에서 React Hook "useState"를 호출합니다. (0) | 2023.03.08 |
---|---|
HTML 조각의 내용 유형 (0) | 2023.03.08 |
워드프레스워드프레스img 태그 없이img 태그 없이 (0) | 2023.03.08 |
동적 키를 사용하여 PHP 개체를 루프하는 방법 (0) | 2023.03.08 |
HTML5 유효성 검사 시 빈 머리글 경고 (0) | 2023.03.08 |