Как заставить docker daemon скачивать образы с локального registry и не обращаться к docker hub?
Внутри локалки есть registry или harbor с настроенной функцией кэширования. Как заставить конечные машины вообще не обращаться к docker.io? Указание registry-mirrors и insecure-registries не помогает. Когда лёг Amazon 20-го октября - пайпланы тоже сломались.
UPD. Главная проблема официальных рекомендаций в том, что индексы всё равно идут качаться с registry-1.docker.io. Да, потом уже в дело вступает локальный кэш, но вот если индексы не отдаются, то вниз по течению тоже всё падает.
Ответы (1 шт):
Коротко: /etc/hosts + insecure-registries.
Длинно:
Если в конфиге docker daemon указать через registry-mirrors ТОЛЬКО ваш локальный кэш, то обращение к registry-1.docker.io всё равно останется. Решение простое: завернуть dns в ваш локальный registry/harbor/etc. Но т.к. ssl/tls никто не отменял, то в insecure-registries добавляем и registry-1.docker.io.
grep docker /etc/hosts | grep -v '#'
10.10.250.102 docker.io
10.10.250.102 registry-1.docker.io
nslookup u.local
Server: 127.0.0.53
Address: 127.0.0.53#53
Name: u.local
Address: 10.10.250.102
jq . /etc/docker/daemon.json:
{
"hosts": [
"unix:///var/run/docker.sock"
],
"insecure-registries": [
"registry-1.docker.io",
"u.local"
],
"registry-mirrors": [
"http://u.local"
]
}
Демо: https://asciinema.org/a/754531
docker --version
Docker version 27.5.0, build a187fa5