Դուք խմբագրում եք WireGuard-ի կարգավորումը աշխատող կոնտեյների ներսում, այն աշխատում է, և հաջորդ image-ի թարմացումը ջնջում է այն։ Ոչինչ սխալ կարգավորված չէր։ Ֆայլը ապրում էր կոնտեյների գրելի շերտում, որը գոյություն ունի միայն այդ կոնտեյների օրինակի համար։ Կարևոր համեմատությունը ոչ թե այն է, թե որ գործիքը օգտագործել, այլ այն, թե ինչ մուտքեր է հայտարարում ձեր տեղակայումը։ Այն ամենը, ինչ ձեռքով խմբագրել եք, մուտք է, որի մասին տեղակայումը չգիտի։

Երկու տեսակի վիճակ, մեկը՝ մեկանգամյա

Կոնտեյներն ունի գրելի շերտ աշխատանքի ընթացքում արված փոփոխությունների համար, և այդ շերտը դեն է նետվում, երբ կոնտեյները փոխարինվում է։ Այն կարգավորման պահոց չէ և պահուստային պատճեն չէ։ Image-ը և հայտարարված մուտքերը ամբողջ սահմանումն են այն բանի, ինչ աշխատում է։

Հարցրեք, թե ձեր VPN ֆայլերից որոնք են հայտարարված մուտքեր և որոնք՝ պատահականություն՝

docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpn

Diff-ը թվարկում է, թե ինչ փոխվեց գրելի շերտում, և դա հենց այն բաների բազմությունն է, որոնք կանհետանան։ Mount-ների ցանկը ցույց է տալիս, թե ինչ է մնում։ Երկուսի համեմատությունը պատասխանում է հարցին նախքան ինչ-որ բան կկորցնեք։

Bind mount, անվանված volume կամ secret՝ ինչ է պաշտպանում յուրաքանչյուրը

Երեքն էլ կարող են պահել VPN պրոֆիլ, և տարբերվում են նրանով, թե ով կարող է կարդալ այն և ինչ է լինում փոխարինման ժամանակ։

MechanismSurvives recreationWho can read it
Writable layerNoAnyone with container access, until it is gone
Bind mountYes, while the host path existsWhatever the host permissions allow
Named volumeYes, until the volume is removedManaged by the runtime
SecretYes, as a declared inputThe container process, by design

Bind mount-ը քարտեզագրում է host-ի ուղին, ուստի ֆայլը պաշտպանված է այնքան, որքան այդ ուղին, և տեսանելի է այնքան, որքան թույլ են տալիս host-ի իրավունքները։ Անվանված volume-ը կառավարվում է runtime-ի կողմից և գոյատևում է կոնտեյների հեռացումից, ինչը այն դարձնում է ավելի ապահով լռելյայն տարբերակ տեղակայմանը պատկանող վիճակի համար։ Secret մեխանիզմը նյութի համար է, որը չեք ուզում image-ում կամ միջավայրի փոփոխականում։

Մի՛ վերաբերվեք յուրաքանչյուր միջավայրի փոփոխականին և host-ի ֆայլին որպես հավասար պաշտպանություն, որովհետև այդպես չէ։

Կոնտեյների ներսում խմբագրումը թակարդն է

Թակարդը գործիքը չէ, այլ խմբագրման ուղղությունը։ Աշխատող կոնտեյների ներսում արված փոփոխությունը անտեսանելի է տեղակայման համար, ուստի հաջորդ վերստեղծումը լուռ հետ է վերադարձնում այն, և ախտանիշը image-ի ռեգրեսիայի տեսք ունի։ Եթե ախտորոշման համար պետք է այնտեղ փոփոխություն անել, անմիջապես արտապատճենեք այն դուրս և դրեք հայտարարված մուտքի մեջ։ Ապա վերստեղծեք, որպեսզի ապացուցեք, որ տեղակայումը վերարտադրում է այն։

Պրոֆիլը կարող է պարունակել մասնավոր բանալիներ և հաշվի նյութ, ինչը այդ ֆայլի պահուստային պատճենը դարձնում է գաղտնիքների կառավարման խնդիր, այլ ոչ թե ֆայլի պատճենում։ Պահեք սեփականությունը և ընթերցման հասանելիությունը սահմանափակված կոնտեյների փաստացի գործընթացով, փոխարենը host-ի պանակը լայնացնելու, որպեսզի թույլտվության սխալը անհետանա։

Այդ լայնացումն է, որով կոնտեյների հարմարավետությունը դառնում է host-ի մերկացում։

Վերստեղծեք դիտավորյալ, ապա ստուգեք չորս բան

Գրանցեք image-ի տարբերակը, պահանջվող սարքը և հնարավորությունները, ցանցային միացումը և մշտական մուտքերը։ Սարքի և հնարավորությունների ցանկը հատկապես կարևոր է VPN կոնտեյների համար, որովհետև թունելին անհրաժեշտ են ցանցային սարքը և այն կարգավորելու արտոնությունը։

Հաստատեք, թե գեներացված աշխատանքային վիճակից որն է պետք վերակառուցել, այլ ոչ թե պահել։ Բանալիները, որ թունելը գեներացրել է առաջին մեկնարկին, վիճակ են, և դրանք պահելը կամ նորից գեներացնելը որոշում է, որն ունի հետևանքներ յուրաքանչյուր peer-ի համար, որը գիտի հին հանրային բանալին։

Վերահսկվող վերստեղծումից հետո ստուգեք ինքնությունը, երթուղավորումը, DNS-ը և պահանջվող ձախողում-բլոկը։ Գործընթացը, որն սկսվում է առանց սխալների, չի ապացուցում այդ չորսից ոչ մեկը։ Ստուգեք այն, մինչ թունելն աշխատում է, և կրկին այն կանգնեցնելուց հետո, որովհետև ձախողում-բլոկն ի հայտ է գալիս միայն այն ժամանակ, երբ թունելը վերանում է։

Պահեք վերականգնման պատճեն կոնտեյնից դուրս

Պահեք վերականգնման պատճեն, որն ապրում է կոնտեյնից անկախ, և փորձարկեք դրա վերականգնումը փաստաթղթավորված ընթացակարգով։ VPN պրոֆիլի չստուգված պահուստային պատճենը հույս է, հատկապես երբ վերականգնման ուղին ներառում է թույլտվություններ, որոնց կարիքը կոնտեյների գործընթացն ունի։

Եթե VPN ունեցող կոնտեյնը փոխարինվում է, համակարգեք նրա ցանցային կույտը կիսող հավելվածները runtime-ի աջակցվող կյանքի ցիկլի շրջանակում։

Այդ համակարգումը տարբերությունն է վերագործարկման և ընդհատման միջև։ Տեղակայումը պետք է նկարագրի, թե որտեղից է գալիս կարգավորումը, և volume-ների փաստաթղթավորումն այն տեղն է, որտեղ ստուգում եք, թե ինչ է իրականում պահպանում runtime-ը։

Առնչվող հոդվածներ