Ноутбукуңуз корпоративдик VPN'де, curl ички registry'ге жетет, бирок docker pull дагы эле EOF менен бузулат. Бул айкалыш карама-каршылык эмес. Сиз терген команда shell'иңизде иштейт, ал эми өткөрүү Docker CLI тандаган daemon'дун ичинде иштейт, жана ал daemon таптакыр башка хостто болушу мүмкүн. Так ошонун желелик жолу иштеши керек, жана так ошонун proxy параметрлери колдонулат.

Маршруттан эмес, кыймылдаткычты аныктоодон баштаңыз

docker context show жана docker version иштетиңиз. Версиянын чыгышы клиент бөлүмүн жана сервер бөлүмүн басып чыгарат, ал эми сервер блогу ким жооп бергенин айтат: жергиликтүү native кыймылдаткыч, Docker Desktop виртуалдык машинасы же алыскы машинадагы daemon. Ишенимдүү болгуңуз келсе, docker context inspect тандалган контексттин акыркы чекитин көрсөтөт, жана бул командалардын эч бири эч нерсени өзгөртпөйт.

DOCKER_HOST сыяктуу чөйрө өзгөрмөсү CLI'ни сиз болжолдогондон башка кыймылдаткычка үнсүз багытташы мүмкүн, жана бул ноутбук VPN'де көрүнгөнү менен pull башка жакка кеткен учурдун кадимки түшүндүрмөсү.

Daemon'дун өзүнүн желелик инсандыгы бар

Алыскы кыймылдаткычка жеке registry'ге өзүнүн уруксат берилген жолу керек. Ноутбукуңуздун VPN клиентин туташтыруу ошол ноутбукка маршрут берет; ал лабораторияда же булуттук кошумча тармакта отурган daemon'го ошол эле жеке даректи бербейт. Эгер кыймылдаткыч Docker Desktop болсо, pull анын виртуалдык машинасынын ичинде жүрөт, ал эми анын shell чөйрөңүздөн бөлүнгөн өзүнүн желелик жана proxy конфигурациясы бар.

Ошондуктан хостто ийгиликтүү curl хост жөнүндө гана далил, андан ашык эмес.

Registry менен кайсы алмашуу бүткөнүн аныктаңыз

Image тартуу — бул ырааттуулук: аутентификация, манифестти алуу, андан кийин көбүнчө объектилик сактыкка же CDN акыркы чекитине багытталган blob өткөрүүлөрү. Ийгиликтүү docker login биринчи кадамды гана далилдейт, ал эми токен толугу менен жарактуу болушу мүмкүн, бирок кайра багытталган blob хосту daemon'дун тармагынан жеткиликсиз. Бир нерсени өзгөртүүдөн мурун так убакытты, image шилтемесин жана daemon же клиент журналындагы биринчи пайдалуу окуяны жазып алыңыз.

EOF өз алдынча эч кандай себеп атабайт. Бул үзүлгөн байланыш, агымды таштаган proxy, убакыттын бүтүшү же MTU маселеси болушу мүмкүн, жана убакыт белгиси бар окуясыз алардын ортосунда божомолдоо — адамдардын соо кыймылдаткычты кайра курушунун жолу. Клиенттин чыгышындагы байттык жылышууну дайын катары караңыз, анткени ар жолу бирдей өлчөмдө токтогон өткөрүү эч качан башталбаган өткөрүүдөн таптакыр башка нерсе. Эки натыйжаны тең жазып, аларды аракеттердин ортосунда салыштырыңыз.

Өткөрүүнү аткарган компонентти конфигурациялаңыз

Native Linux кыймылдаткычы үчүн proxy shell'де эмес, кызмат чөйрөсүндө болушу керек. /etc/systemd/system/docker.service.d/ астындагы HTTP_PROXY, HTTPS_PROXY жана NO_PROXY жазуулары бар drop-in файлы, андан кийин systemctl daemon-reload жана кайра иштетүү — документтелген тартип. Docker Desktop ошол эле маанилерди өз жөндөөлөрү аркылуу сунуштайт, ал эми shell профилин түзөтүү алардын эч бирине тийбейт.

Эгер registry'ге түз VPN аркылуу жетүү керек болсо, daemon'го resolver, маршрут жана атайын proxy четтетүү керек, жалаң четтетүү эмес. NO_PROXY дал келүүсү ар бир компонент үчүн сап салыштыруу, ал эми астында маршруту жок бошотуу proxy маселесине окшош бузулууну жаратат.

Корпоративдик TLS текшерүүсү уруксат берилген жолдо турганда, анын текшерилген тамырын кыймылдаткыч же Desktop иш агымы аркылуу орнотуңуз. Registry'ни insecure-registries тизмесине кошуу — валидацияны өчүргөн башка өзгөртүү, жана ал ишеним кампасынын конфигурациясы эмес.

Бир көзөмөлдөнгөн pull'ду кайталап, эмне өзгөргөнүн текшериңиз

Бир чекти өзгөртүп, ага ээ болгон компонентти кайра иштетип, ошол эле контекстен ошол эле pull'ду кайталаңыз. Алынган image шилтемесин жана digest'ти текшериңиз, катанын жоктугун эмес, анткени кэштелген катмар экинчи аракетке биринчисине караганда жолдун алда канча аз бөлүгүн өткөрүшү мүмкүн. Чындыгында болгон өткөрүүлөрдү тикетте сактаңыз, анткени алар кайталоо чындап эмнени текшергенин билдирген жалгыз жазуу.

Build кадамдары менен иштеп жаткан контейнерлердин өз желелик контексттери бар, ошондуктан pull өзү иштегенден кийин аларды өзүнчө суроо катары караңыз.

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