Ја уредувате конфигурацијата на 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.

Таа координација е разликата меѓу рестартирање и прекин. Распоредувањето треба да опише од каде доаѓа конфигурацијата, а документацијата за volumes е местото каде што проверувате што runtime навистина задржува.

Поврзани статии