我启动了jenkins-k8s-slave
,该代码应从本地注册表中提取。为什么docker会忽略kubernetes管理的本地DNS设置(/etc/hosts
和/etc/resolv.conf
)?
当我做:docker pull service.namespace.svc.cluster.local:5000/test:latest
我得到:dial tcp: lookup service.namespace.svc.cluster.local: no such host
但这有效:curl https://service.namespace.svc.cluster.local:5000/v2/_catalog -k
{"repositories":[...]}
最佳答案
无论这种情况如何,您都需要配置docker以使用您的dns,在这种情况下,似乎您需要告诉docker使用kubernetes dns:
https://github.com/moby/moby/issues/23910
配置示例:
cat /etc/docker/daemon.json
{
"hosts": [ "unix:///var/run/docker.sock","tcp://0.0.0.0:2376"],
"live-restore": true,
"tls": true,
"tlscacert": "/etc/docker/ssl/ca.pem",
"tlscert": "/etc/docker/ssl/cert.pem",
"tlskey": "/etc/docker/ssl/key.pem",
"tlsverify": true,
"dns":["172.21.1.100","172.16.1.100"]
}
也可以看看:
https://forums.docker.com/t/docker-pull-not-using-correct-dns-server-when-private-registry-on-vpn/11117/29
关于docker - Docker忽略本地DNS设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53176358/