นักเทียบท่า: สร้างปริมาณคงที่ในไดเรกทอรีเฉพาะ


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ตามที่คุณต้องการ)


อย่าคิดว่าเป็นความคิดที่ดีที่จะลบโวลุ่มที่จัดการโดยนักเทียบท่า ใช้การเมานท์แทนการเมานต์โฮสต์ไดเรกทอรีเข้ากับนักเทียบท่า
Lex

4

ฉันไม่คิดว่าการใช้local-persistไดรเวอร์เป็นวิธีที่จะไป ยังไม่ได้รับการอัปเดตในอีกสักครู่ คุณสามารถเมาท์โลคัลไดเร็กทอรี (โฮสต์) ลงในคอนเทนเนอร์นักเทียบท่าโดยใช้ตัวเทียบเคียง

การรันสิ่งต่อไปนี้จะสร้างคอนเทนเนอร์ใหม่ที่มีไดเรกทอรีที่เมาท์ซึ่งแมปกับเดสก์ท็อปของฉัน

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 บนเครื่องโฮสต์ของฉัน ตามเส้นทางที่กำหนด นี่เป็นโฟลเดอร์แชร์ / อ่าน / เขียนแบบสองทาง คอนเทนเนอร์จำนวนมากสามารถเมานต์โฟลเดอร์เดียวกัน และมันจะยังคงมีอยู่เมื่อคุณปิดคอนเทนเนอร์ / s ลง

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณสิ่งนี้ช่วยฉันทีละขั้นตอน ฉันพยายามเพิ่มโวลุ่ม เพียงแค่ติดตั้ง dir
Chaim Eliyah
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.