Docker: 특정 디렉터리에 영구 볼륨 생성

Docker: 특정 디렉터리에 영구 볼륨 생성

나는지속도커의 경우. 볼륨의 이름을 지정 extra-addons하고 에 위치해야 합니다 /mnt/.

다음 명령을 실행합니다.

sudo docker volume create /mnt/extra-addons

다음 오류 메시지가 나타납니다.

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

간단히 실행하면 sudo docker volume create extra-addons이 문제가 발생하지 않지만 문제의 볼륨을 검사했을 때 볼륨이 sudo docker inspect extra-addons원하지 않는 위치에 있음을 발견했습니다.

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]

내 말은, 다음과 같은 볼륨을 보고 싶다는 뜻입니다./mnt/extra-addons

어떤 아이디어가 있나요?

답변1

해결책을 찾았습니다.

설치해야 해요지역적 지속성끼워 넣다.

생성하려는 볼륨을 다음과 같이 마운트 지점에 마운트해야 합니다.

 sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons

기대한 결과가 나오는지 확인하려면 다음을 수행하세요.

sudo docker volume inspect extra-addons

결과:

[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local-persist",
        "Labels": {},
        "Mountpoint": "/mnt/",
        "Name": "extra-addons",
        "Options": {
            "mountpoint": "/mnt/"
        },
        "Scope": "local"
    }
]

이것이 내가 찾고 있는 것입니다.

답변2

Docker에 플러그인을 설치하지 않으려면 볼륨에 대한 심볼릭 링크를 만드는 것이 좋습니다.

$ docker volume create <myVolume>
$ docker volume inspect <myVolume> 
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/<myVolume>/_data",
        "Name": "<myVolume>",
        "Options": {},
        "Scope": "local"
    }
]
$ mkdir /mnt/<myVolume>
# if you already have data in your volume, you should copy it to `/mnt/<myVolume>` now
$ sudo rm -rf /var/lib/docker/volumes/<myVolume>/_data
$ sudo ln -s /mnt/<myVolume> /var/lib/docker/volumes/<myVolume>/_data

이제 평소처럼 볼륨을 자유롭게 사용할 수 있습니다(모든 데이터는 /mnt원하는 대로 입력됨).

답변3

local-persist나는 드라이버를 사용하는 것이 올바른 접근 방식이라고 생각하지 않습니다 . 한동안 업데이트가 없었습니다. docker mount를 사용하여 로컬(호스트) 디렉터리를 docker 컨테이너에 탑재할 수 있습니다.

다음 명령을 실행하면 설치 디렉터리가 내 데스크톱에 매핑된 새 컨테이너가 생성됩니다.

mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls

mnt이제 컨테이너 루트에 폴더가 표시됩니다.

bin dev etc home mnt proc root sys tmp usr var

컨테이너에 새 파일 만들기

touch /mnt/extra-addons/test.txt

내 호스트에 test.txt 파일을 만듭니다. 지정된 경로에서. 이제 이는 양방향 읽기/쓰기 공유 폴더입니다. 여러 컨테이너가 동일한 폴더를 마운트할 수 있습니다. 컨테이너를 닫으면 지속됩니다.

여기에 이미지 설명을 입력하세요.

관련 정보