default-address-pools параметрин өзгөртүү сизде мурунтан бар тармактарды кайра номерлебейт, жана ушундай күтүү — кылдат пландын күтүүсүз тыныгууга айлануу жолу. Бул параметр демон жаңы конфигурация менен кайра иштетилгенден кийин түзүлгөн тармактар үчүн автоматтык бөлүштүрүүнү башкарат. Мурунтан иштеп жаткандын баары өзүнө берилген ички тармакты сактайт, анткени ал ички тармак тармактын сакталган аныктамасынын бөлүгү. Уламыш ыңгайлуу, анткени бир өзгөртүү бардык катмарлашууну оңдойт деп сунуштайт, ал эми чындык — эки бөлүктөн турган иш: чындап бош диапазонду тандаңыз, анан бош эмес тармактарды миграциялаңыз.

Уламыш: пулду бир жолу өзгөртүү катмарлашууну оңдойт

Уламыштын белгилүү формасы бар. Бирөө Docker'дын демейки пулун өзгөртүүгө болорун окуп, аны өзгөртөт, демонду кайра иштетет жана контейнер тармагы эми кеңсе VPN'и менен кагылышпайт деп жыйынтыктайт. Эски тармак дагы эле бар, дагы эле туташкан жана кагылышкан даректи дагы эле кармап турат.

Өзгөргөн нерсе — бөлүштүрүүчүнүн келечектеги жүрүм-туруму, ал чындап пайдалуу жана чындап чектелген. Ачык --subnet жок түзүлгөн жаңы тармактар жаңы пулдан кесилет; мурунтан бар болгондору ал пулда эч качан болгон эмес. Кайра иштетүү тармактарды кайра куруубайт жана контейнерлерди алардын ортосунда жылдырбайт. Эгер өзгөртүүдөн кийин да симптом сакталса, өзгөртүү реалдуу болгон, ал эми диагноз толук эмес.

Негизги диапазон жана бөлүнгөн префикс

Конфигурацияда чаташтырууга оңой эки талаа бар. base — бөлүштүрүүчү кескен диапазон, ал эми size — ар бир бөлүнгөн тармактын префикс узундугу, ошондуктан 10.10.0.0/16 негизи 24 өлчөмү менен ошол /16 ичинде /24 таратат. Ролдорду тескери которуу сиз ойлогон эмес бөлүштүрүү үлгүсүн жаратат, адатта бир алп тармак же бүткөн пул.

Пул — брондоп коюу, далил эмес. Docker хосттун маршруттоо таблицасында көргөн жаңжалдардан качат, ал эми сиз али туташа элек VPN'ди көрө албайт.

Ушул чектөө — атайын тандоонун бүткүл себеби. Салыштырылуучу диапазондор — хост жетүүгө тийиш болгондор: кеңсе LAN, корпоративдик VPN'дин ички ички тармактары, лаборатория же staging префикстери жана ошол эле overlay'деги башка контейнер хосту. Демонго тийүүдөн мурун аларды CIDR түрүндө жазыңыз, анткени баштагы тизме эң маанилүүсүн өткөрүп жиберет. Анан алардын эч бири менен катмарлашпаган негизди тандап, тизмени жайгаштыруу менен бирге сактаңыз, кийинки адам бул көнүгүүнү эстен кайталабашы үчүн.

Тандоодон мурун тизмектеңиз

Алгач бар нерсени тизмектеңиз. docker network ls тармактарды тизмелейт, ал эми docker network inspect bridge -f '{{.IPAM.Config}}' белгилүү тармак колдонгон ички тармакты басып чыгарат. Колдонуучу аныктаган ар бир тармак үчүн кайталаңыз, анткени Compose долбоорлору өзүнүкүн түзөт, ал эми compose файлындагы ачык --subnet пулду толугу менен айланып өтөт.

Ошол акыркы пункт — миграциядан кийин да жашаган пункт. Пулду өзгөртүү кесиптешиңиздин compose файлында 172.18.0.0/16 бекитүүсүнө тоскоол болбойт, ал эми жаңжал башка автор менен кайтып келет.

Мурунтан барды миграциялоо

Бар тармактарды миграциялоо — өзүнчө, колдоого алынган операция. Ар бир таасирленген тармакты жаңы ички тармак менен кайра түзүү керек, бул аны колдонгон контейнерлерди ажыратып, кайра туташтырууну билдирет, ал эми тармакты кайра түзүү анын контейнер тиркемелерин жылдыруунун ордуна жок кылат. Томдорду жана конфигурацияны сактаңыз жана кайра түзүүнү маалыматты кайра коюу эмес, жайгаштыруу катары кабыл алыңыз. Ишти тейлөө терезесинде аткарыңыз, анткени кайра түзүлгөн тармактагы контейнерлер пландаганыңызга карабастан кайра иштетилет.

Документтелген демон конфигурациясын жана кайра иштетүү процедурасын аткарыңыз жана тыныгууну шайкештештириңиз. Бир демону бар хостто systemctl restart docker контейнерлерди алардын кайра иштетүү саясатына ылайык кайра иштетет, жана бул тууралуу кийин эмес, алдын ала билген жөн.

Анан өзгөртүү оңдоого тийиш болгон эки нерсени текшериңиз. Жаңы ички тармакты docker network inspect аркылуу карап, анын тандалган негиздин ичинде экенине ынаныңыз, анан өкүлдүк VPN багытына маршрутту ip route get 10.20.30.40 аркылуу текшерип, ал күткөн жерге барарына, көпүрөгө эмес экенине ынаныңыз. Кызматтарды табууну жана контейнераралык байланышты да сынаңыз, анткени башка даректөө менен кайра түзүлгөн тармак аттарды чечүүнү колдонмо катасына окшош турдо бузушу мүмкүн.

Андан кийин да эмне бузулат

Туруктуу бөлүгү — жазуу. Бөлүштүрүү тизмесин, тандалган негиз менен өлчөмдү жана кайра түзүлгөн тармактарды жайгаштыруу менен бир жерде сактаңыз.

Диапазондун жеке болушу аны кайра колдонууга коопсуз кылбайт. 10.0.0.0/8 жеке жана ошондой эле жолдун бир жеринде мурунтан колдонулуп жаткан болушу ыктымал, ошондуктан жооп — бир блокко артыкчылык эмес, так брондоп коюу. Docker тармактык документтери ички тармактарды автоматтык бөлүштүрүүнү жана пул талааларын сүрөттөйт. Диапазонду тыкан көрүнүшүнө карап эмес, жетүүгө тийиш жериңизге карап тандаңыз.

Тектеш макалалар