Ի՞նչ տարբերություն կա վոլյումի (հավաքածու) և պարզ կապի (binding) միջև հոստի վրա գտնվող դիրեկտորիայի հետ։
sobes.tech AI
Պատասխան AI-ից
-
Տոմներ (Volumes): Տոմի կյանքի ցիկլը բաժանված է կոնտեյների կյանքի ցիկլից: Docker-ը կառավարում է տոմների պահեստավորումը հոստ-մեքենայում: Տոմները ստեղծվում, միացվում և ջնջվում են Docker-ի կողմից, և նրանց տվյալները պահվում են նույնիսկ կոնտեյներին կանգնեցնելու կամ ջնջելուց հետո: Նրանք հարմար են մշտական տվյալների պահեստավորման, տվյալների բազաների կամ կոնտեյների միջև ընդհանուր տվյալների համար:
-
Ուղիղ կապեր հոստի ուղղակի հետ (Bind Mounts): ուղղակի կապում են հոստի մեքենայի ուղղակի կամ ֆայլը կոնտեյների ներսում գտնվող ուղղակի կամ ֆայլի հետ: Docker-ը ուղղակի չի կառավարում տվյալների պահեստավորումը, այն միայն ստեղծում է միացման կետ: Կոնտեյների ֆայլային համակարգում փոփոխությունները այս կետում արտացոլվում են հոստի վրա և հակառակը: Դրանք հարմար են օգտագործելու համար՝
- Զարգացման համար՝ հումքի կոդը կոնտեյնում մոնտաժելու համար փոփոխությունները անմիջապես արտացոլելու համար:
- Կոնֆիգուրացիայի համար՝ կոնֆիգուրացիոն ֆայլերը հոստից կոնտեյնում փոխանցելու համար:
- Հոստի ռեսուրսներին մուտք գործելու համար՝ կոնտեյներին հոստի որոշ ֆայլեր կամ ուղղություններ տրամադրելու համար:
Հիմնական տարբերությունները՝
| Գծագրություն | Տոմ (Volume) | Հյուսվածքի վրա կապ (Bind Mount) |
|---|---|---|
| Կառավարում | Docker-ը ամբողջությամբ կառավարում է պահեստավորումը | Docker-ը միայն ստեղծում է միացման կետը |
| Կյանքի ցիկլ | Բաժանված է կոնտեյներից | Կապված է հոստի ուղղակի կամ ֆայլի գոյության հետ |
| Աշխատունակություն | Սովորաբար օպտիմիզացված I/O-ի համար | תלוי հոստի ֆայլային համակարգի կատարողականության վրա |
| Տրանսպորտայինություն | Ավելի փոխանցելի է Dockerfile/Compose-ի միջոցով | Ավելի քիչ փոխանցելի, կախված հոստի կառուցվածքից |
| Իզոլացիա | Ավելի լավ է հոստից իզոլացիա ապահովում | Ավելի քիչ է հոստի ֆայլային համակարգից իզոլացված |
Օրինակ օգտագործման տոմը Dockerfile-ում:
# Օգտագործում տոմ
VOLUME /app/data
Օրինակ օգտագործման հյուսվածքի վրա կապը կոնտեյներ սկսելու ժամանակ:
# Կապում է ուղղությունը
docker run -v /path/on/host:/path/in/container my_image
Օրինակ օգտագործման տոմը կոնտեյներ սկսելու ժամանակ:
# Օգտագործում անունով տոմ
docker run -v myvolume:/path/in/container my_image