VPN конфигурација преживљава поновно стварање контејнера само ако је монтирате
Датотека измењена у контејнеру који ради живи у слоју који нестаје. Упоредите bind mount, волумене и тајне, затим поново створите и проверите четири ствари.
Мењате WireGuard конфигурацију унутар контејнера који ради, ради, а следеће ажурирање слике је брише. Ништа није било погрешно конфигурисано. Датотека је живела у слоју контејнера који се може писати, а који постоји само за ту инстанцу контејнера. Важно поређење није који алат користити, него које улазе ваше распоређивање декларише. Све што сте изменили ручно је улаз за који распоређивање не зна.
Две врсте стања, једно је за одбацивање
Контејнер има слој који се може писати за промене настале у време извршавања, и тај слој се одбацује када се контејнер замени. То није складиште конфигурације и није резервна копија. Слика плус декларисани улази јесу цела дефиниција онога што ради.
Питајте које су ваше VPN датотеке декларисани улази, а које случајности:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpnDiff наводи шта се променило у слоју који се може писати, а то је управо скуп ствари које ће нестати. Списак монтирања показује шта преживљава. Поређење тога двоје одговара на питање пре него што нешто изгубите.
Bind mount, именовани волумен или тајна: шта сваки штити
Сва три могу да држе VPN профил, и разликују се по томе ко га може читати и шта се дешава при замени.
| Mechanism | Survives recreation | Who can read it |
|---|---|---|
| Writable layer | No | Anyone with container access, until it is gone |
| Bind mount | Yes, while the host path exists | Whatever the host permissions allow |
| Named volume | Yes, until the volume is removed | Managed by the runtime |
| Secret | Yes, as a declared input | The container process, by design |
Bind mount мапира путању хоста, па је датотека заштићена онолико колико је заштићена та путања и видљива онолико колико дозвољавају дозволе хоста. Именовани волумен управља runtime и преживљава уклањање контејнера, што га чини сигурнијим подразумеваним избором за стање које поседује распоређивање. Механизам тајне је за материјал који не желите у слици или променљивој окружења.
Не третирајте сваку променљиву окружења и сваку датотеку хоста као једнаку заштиту, јер нису.
Уређивање унутар контејнера је замка
Замка није алат, него смер измене. Промена направљена унутар контејнера који ради невидљива је распоређивању, па је следеће поновно стварање тихо враћа и симптом изгледа као регресија у слици. Ако морате нешто да промените тамо ради дијагностике, одмах то копирајте напоље и ставите у декларисани улаз. Затим поново створите да докажете да распоређивање то репродукује.
Профил може да носи приватне кључеве и рачунски материјал, што резервну копију те датотеке чини задатком руковању тајнама, а не копирањем датотеке. Држите власништво и приступ читању ограничене на стварни процес контејнера, уместо да проширите директоријум хоста како би грешка дозвола нестала.
То проширење је начин на који погодност у контејнеру постаје изложеност хоста.
Намерно поново створите, затим проверите четири ствари
Запишите верзију слике, потребан уређај и могућности, мрежно повезивање и трајне улазе. Списак уређаја и могућности посебно је важан за VPN контејнер, јер тунелу треба мрежни уређај и привилегија да га конфигурише.
Потврдите које генерисано стање рада треба поново изградити, а не сачувати. Кључеви које је тунел генерисао при првом покретању су стање, а одлука да ли да их задржите или поново генеришете има последице за сваког peera који зна стари јавни кључ.
Након контролисаног поновног стварања проверите идентитет, усмеравање, DNS и потребну блокаду при отказу. Процес који се покрене без грешака не доказује ниједну од те четири ствари. Проверите то док је тунел активан и поново након што га зауставите, јер блокада при отказу се показује само када тунел нестане.
Држите копију за опоравак изван контејнера
Држите копију за опоравак која живи независно од контејнера и тестирајте њено враћање кроз документовани поступак. Нетестирана резервна копија VPN профила је нада, посебно када путања опоравка укључује дозволе које процес контејнера треба.
Ако се контејнер који поседује VPN замени, ускладите апликације које деле његов мрежни стек у оквиру подржаног животног циклуса runtimeа.
Та усклађеност је разлика између рестарта и прекида. Распоређивање треба да опише одакле конфигурација долази, а документација о волуменима је место где проверавате шта runtime заиста чува.