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


16

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

어떤 생각?

답변:


13

해결책을 찾았습니다.

로컬 지속 플러그인 을 설치해야했습니다 .

다음과 같이 볼륨을 마운트하여 마운트 지점에 만들어야했습니다.

 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"
    }
]

그것이 내가 찾던 것입니다.


6

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

$ 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원하는대로 모든 데이터를 입력하십시오 )


Docker 관리 볼륨을 삭제하는 것이 좋습니다 생각하지 마십시오. 대신 호스트 디렉토리를 docker에 마운트하려면 마운트를 사용하십시오.
Lex

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 파일을 만듭니다. 지정된 경로에서. 이것은 이제 양방향 읽기 / 쓰기 공유 폴더입니다. 여러 컨테이너가 동일한 폴더를 마운트 할 수 있습니다. 컨테이너를 종료하면 지속됩니다.

여기에 이미지 설명을 입력하십시오


고마워, 이것은 나에게 단계를 구했다. 볼륨을 추가하려고했습니다. 그냥 디렉토리를 마운트
Chaim Eliyah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.