VOLUME
คำแนะนำและสร้างปริมาณข้อมูลในภาชนะหางของคุณที่รันไทม์ ไดเร็กทอรีที่ระบุเป็นอาร์กิวเมนต์VOLUME
เป็นไดเร็กทอรีที่ข้ามUnion File Systemและส่วนใหญ่จะใช้สำหรับข้อมูลถาวรและข้อมูลที่แชร์
หากคุณเรียกใช้docker inspect <your-container>
คุณจะเห็นภายใต้Mounts
ส่วนนี้Source
ซึ่งแสดงถึงตำแหน่งไดเร็กทอรีบนโฮสต์และDestination
ซึ่งแสดงถึงตำแหน่งไดเร็กทอรีที่ต่อเชื่อมในคอนเทนเนอร์ ตัวอย่างเช่น,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
นี่คือ 3 กรณีการใช้งานสำหรับdocker run -v
:
docker run -v /data
: นี่คล้ายกับการระบุVOLUME
คำสั่งใน Dockerfile ของคุณ
docker run -v $host_path:$container_path
: สิ่งนี้ช่วยให้คุณสามารถต่อเชื่อม$host_path
จากโฮสต์ของคุณไปยัง$container_path
คอนเทนเนอร์ของคุณในระหว่างรันไทม์ ในการพัฒนาสิ่งนี้มีประโยชน์สำหรับการแชร์ซอร์สโค้ดบนโฮสต์ของคุณกับคอนเทนเนอร์ ในการใช้งานจริงสามารถใช้เพื่อเชื่อมต่อสิ่งต่างๆเช่นข้อมูล DNS ของโฮสต์ (ที่พบใน/etc/resolv.conf
) หรือความลับลงในคอนเทนเนอร์ ในทางกลับกันคุณยังสามารถใช้เทคนิคนี้เพื่อเขียนบันทึกของคอนเทนเนอร์ลงในโฟลเดอร์เฉพาะบนโฮสต์ ทั้งสองอย่าง$host_path
และ$container_path
ต้องเป็นเส้นทางที่แน่นอน
docker run -v my_volume:$container_path
: นี้จะสร้างปริมาณข้อมูลในภาชนะของคุณที่และชื่อมัน$container_path
มันเป็นหลักเช่นเดียวกับการสร้างและการตั้งชื่อปริมาณการใช้my_volume
docker volume create my_volume
การตั้งชื่อปริมาณเช่นนี้จะเป็นประโยชน์สำหรับปริมาณข้อมูลภาชนะและปริมาณที่ใช้ร่วมกันจัดเก็บข้อมูลโดยใช้โปรแกรมควบคุมที่เก็บหลายโฮสต์เช่นFlocker
สังเกตว่าวิธีการติดตั้งโฟลเดอร์โฮสต์เป็นไดรฟ์ข้อมูลไม่มีอยู่ใน Dockerfile การอ้างอิงเอกสารนักเทียบท่า ,
หมายเหตุ: สิ่งนี้ไม่สามารถใช้งานได้จาก Dockerfile เนื่องจากวัตถุประสงค์ในการพกพาและการแชร์ เนื่องจากไดเรกทอรีโฮสต์นั้นขึ้นอยู่กับโฮสต์โดยธรรมชาติแล้วไดเรกทอรีโฮสต์ที่ระบุใน Dockerfile อาจใช้ไม่ได้กับโฮสต์ทั้งหมด
ตอนนี้หากคุณต้องการคัดลอกไฟล์ของคุณไปยังคอนเทนเนอร์ในสภาพแวดล้อมที่ไม่ใช่การพัฒนาคุณสามารถใช้ADD
หรือCOPY
คำแนะนำใน Dockerfile ของคุณ นี่คือสิ่งที่ฉันมักจะใช้สำหรับการปรับใช้ที่ไม่ใช่การพัฒนา
COPY
ADD
เกือบจะเหมือนกัน แต่ADD
มีความสามารถพิเศษบางอย่างในการเขียน URL และไฟล์เก็บถาวรที่น่าแปลกใจ