Docker'dagi pool ustma-ust tushish xatosi VPN marshruti muammosi emas
Bitta xato ajratish paytida, ikkinchisi marshrut o‘zgargandan keyin yuzaga keladi. Konteyner manzillari yoki tunnelga tegishdan oldin IPAM quyi tarmoqlarini o‘qing.
Docker bu manzil fazosida pool boshqasi bilan ustma-ust tushadi degan xabar bilan tarmoq yaratishdan bosh tortadi va kimdir VPN marshruti sabab bo‘lishi kerak deb qaror qiladi. Bu bo‘lishi mumkin emas. Bu xato pool ajratilayotganda, bitta ham paket mavjud bo‘lmasdan oldin yuzaga keladi va qo‘lda yozilgan yadro marshrutining unga hech qanday ta'siri yo‘q. VPN bir qadam keyin muhim bo‘ladi, ya'ni allaqachon manzilga ega konteyner marshrut paydo bo‘lgandan keyin yetib bo‘lmaydigan bo‘lganda. Ikki muammo, ikki dalillar to‘plami va ularni aralashtirish ikkalasini ham tuzatmaydigan o‘zgarish keltiradi.
O‘xshash ko‘rinadigan ikki xato
Ajratish xatosi arifmetik. Docker siz so‘ragan quyi tarmoqni o‘zi allaqachon boshqarayotgan quyi tarmoqlar bilan taqqoslaydi, kesishma topadi va bosh tortadi. Hali hech narsa ishlamayapti, shuning uchun marshrut, konteyner va tekshiriladigan trafik yo‘q.
Ish paytidagi belgi yetib borish savolidir. Kecha javob bergan konteyner endi javob bermaydi va xostning marshrutlash jadvalida nimadir o‘zgardi. Konteyner hali ham o‘z manzilini saqlaydi; savol shu manzil qaysi yo‘lni olishida.
Ikkalasi ham manzil rejasi muammosi. Ulardan faqat bittasi Docker muammosi.
Avval ajratilgan pool'larni o‘qing
Tarmoqlarni sanab chiqing va kesishishi mumkin bo‘lganlarini tekshiring. Quyi tarmoq IPAM konfiguratsiyasida yashaydi va ulangan konteynerlar alohida sanab o‘tiladi:
docker network ls
docker network inspect EXISTING_NETWORK
O‘sha quyi tarmoqni yangi tarmoq so‘rayotgan pool bilan taqqoslang va Compose har bir loyiha uchun o‘z standart tarmog‘ini yaratishini yodda tuting. Unutgan loyihangiz bilan to‘qnashuv daemon bilan to‘qnashuvga aynan o‘xshaydi.
Xizmatdagi statik ipv4_address bitta konteynerning manzili, pool ta'rifi emas. Uni o‘zgartirish ustma-ust tushishni yo‘qotmaydi, chunki ustma-ust tushish konteynerlar orasida emas, tarmoq quyi tarmoqlari orasida. Docker'ning network-create ma'lumotnomasi oddiy ko‘prik ajratish uchun ustma-ust tushmaydigan quyi tarmoqlarni talab qiladi va bittasini aniq tanlash yo‘lini hujjatlashtiradi.
VPN'dan omon qoladigan prefiks tanlang
Darhol bo‘lgan to‘qnashuv va kelajakdagi marshrut bir xil tanlov bilan hal qilinadi, shuning uchun uni bir marta qiling. Nomzod diapazonni LAN, xost yetib bora oladigan har bir VPN manzili va ishlatilayotgan har qanday boshqa overlay bilan taqqoslang.
Docker'ni qanoatlantirib, uzoq tarmoq bilan to‘qnashadigan prefiks sizga toza ishga tushadigan va tunnel ko‘tarilgan lahzada yetib bo‘lmaydigan bo‘lib qoladigan konteyner beradi. Bu ushbu maqoladagi ikkinchi xato va uni keyinroq aniqlash hozir undan qochishdan ancha qiyin.
Tanlangan diapazonlarni keyingi loyiha o‘qiy oladigan joyga yozing. Ajratilgan prefikslarning bir qatorli reyestri tushuntirilmagan bir haftalik time-out'lardan arzon.
Tarmoqni ataylab bekor qiling yoki o‘zgartiring
Yangi Compose tarmog‘i uchun tarmoqning IPAM konfiguratsiyasida ishlatilmagan prefiksni o‘rnating. Mavjud loyiha uchun qayta raqamlashni rejalashtiring: qat'iy manzillar, bog‘liq xizmatlar va tarmoqni qayta yaratish qadami — barchasini hisobga olish kerak, chunki YAML tahrirlash ishlab turgan tarmoqni qayta raqamlamaydi.
Agar eskirgan tarmoq to‘qnashuvchi ajratishga ega bo‘lsa, uni olib tashlashdan oldin kim ulanganini tekshiring. docker network rm faol endpoint'lar mavjud ekan bosh tortadi va docker stop tarmoq nomi emas, konteyner nomlari yoki ID'larini oladi. Konteynerni to‘xtatish pool'ni ushlab turgan tarmoq ta'rifini ham olib tashlamaydi.
Keng prune diagnostika vositasi emas. U bog‘liq bo‘lmagan loyihalarga yetib boradi va siz yig‘moqchi bo‘lgan dalillarni yo‘q qiladi.
Standart pool'lar faqat keyingi ajratishga yordam beradi
Daemon'ning standart manzil pool sozlamasi kelajakdagi avtomatik ajratishlarni siz saqlab qo‘ygan diapazonlardan tashqarida ushlab yaxshilaydi. U allaqachon mavjud tarmoqlarni orqaga qarab qayta manzillamaydi va boshqa aniq quyi tarmoq bilan ustma-ust tushadigan aniq quyi tarmoqni hal qilmaydi.
Bu sozlamaga o‘z qayta ishga tushirilishi bo‘lgan alohida, rejalashtirilgan o‘zgarish sifatida qarang, bitta loyihani tuzatishning qismi sifatida emas. Ikkalasini aralashtirish daemon qayta ishga tushishining bog‘liq bo‘lmagan tekshiruv o‘rtasiga tushishini bildiradi. Uni o‘z oynasida rejalashtiring. Keyin bitta yangi avtomatik ajratish haqiqatan ham siz saqlagan diapazonlardan tashqariga tushishini tasdiqlang.
Yaratish muvaffaqiyatli bo‘lgach, haqiqatan ishlab turgan quyi tarmoqni tekshiring va keyin VPN o‘z mo‘ljallangan holatida bo‘lganda bitta haqiqiy ilova so‘rovini bajaring. Agar pool to‘g‘ri bo‘lsa-yu, kirish hali ham muvaffaqiyatsiz bo‘lsa, qolgan ish marshrut tanlash, filtrlash va qaytish yo‘lidir. Bu ish paytidagi tekshiruv va u ajratish xatosini orqaga qarab ma'nosiz qilmaydi.
Ish tartibi: ajratilgan pool'larni o‘qing, Docker va VPN manzillaridan ham qochadigan prefiks tanlang, tarmoqni ataylab qayta yarating, keyin tunnel ko‘tarilgan holatda bitta so‘rovni sinab ko‘ring.