Docker: tạo một khối lượng liên tục trong một thư mục cụ thể


13

Tôi cần tạo một khối lượng liên tục cho Docker. Âm lượng phải được đặt tên extra-addonsvà nằm trong /mnt/.

Tôi chạy lệnh này:

sudo docker volume create /mnt/extra-addons

Tôi nhận được thông báo lỗi này:

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

Lưu ý rằng khi tôi đơn giản chạy : sudo docker volume create extra-addons, tôi không gặp phải vấn đề này nhưng khi tôi kiểm tra âm lượng trong câu hỏi bằng cách sử dụng sudo docker inspect extra-addons, tôi thấy nó nằm ở nơi tôi không muốn:

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

Ý tôi là tôi muốn xem âm lượng như thế này: /mnt/extra-addons

Bất kỳ ý tưởng?

Câu trả lời:


11

Tôi tìm thấy giải pháp:

Tôi đã phải cài đặt plugin cục bộ .

Tôi đã phải gắn âm lượng để tạo đến điểm gắn kết như sau:

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

Kiểm tra nếu tôi có những gì tôi mong đợi:

sudo docker volume inspect extra-addons

Kết quả:

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

Đó là những gì tôi đang tìm kiếm.


6

Nếu bạn không muốn cài đặt bất kỳ plugin nào vào docker của mình, tôi khuyên bạn nên tạo một liên kết tượng trưng cho âm lượng của bạn:

$ 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

Bây giờ hãy thoải mái sử dụng âm lượng của bạn như bình thường (với tất cả dữ liệu của bạn được nhập vào /mntnhư bạn muốn)


Đừng nghĩ rằng đó là một ý tưởng tốt để xóa khối lượng quản lý docker. Sử dụng một mount thay vì gắn một thư mục máy chủ vào docker.
Lex

3

Tôi không nghĩ sử dụng local-persisttrình điều khiển là cách để đi. Nó đã không được cập nhật trong một thời gian. Bạn có thể gắn thư mục cục bộ (máy chủ) vào thùng chứa docker bằng cách sử dụng docker mount.

Chạy phần sau sẽ tạo một vùng chứa mới với thư mục được gắn vào bản đồ của tôi.

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

Bây giờ bạn có thể thấy một mntthư mục trong thư mục gốc của container.

bin dev etc home mnt proc root sys tmp usr var

Tạo một tệp mới trong vùng chứa

touch /mnt/extra-addons/test.txt

Tạo một tệp test.txt trên máy chủ của tôi. Tại đường dẫn đã chỉ định. Đây là một thư mục chia sẻ đọc / ghi hai chiều. Nhiều container có thể gắn cùng một thư mục. Và nó sẽ tồn tại một khi bạn tắt container của bạn.

nhập mô tả hình ảnh ở đây


Cảm ơn, điều này đã tiết kiệm cho tôi một bước. Tôi đã cố gắng để thêm một khối lượng. chỉ cần gắn kết thư mục
Chaim Eliyah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.