site/content/docs/user/local-registry.md
The following shell script will create a local docker registry and a kind cluster with it enabled.
{{< codeFromFile file="static/examples/kind-with-registry.sh" >}}
The registry can be used like this.
docker pull gcr.io/google-samples/hello-app:1.0docker tag gcr.io/google-samples/hello-app:1.0 localhost:5001/hello-app:1.0docker push localhost:5001/hello-app:1.0kubectl create deployment hello-server --image=localhost:5001/hello-app:1.0If you build your own image and tag it like localhost:5001/image:foo and then use
it in kubernetes as localhost:5001/image:foo.
If for some reason you have code running inside of a pod within the cluster that
needs to use this registry directly (e.g. to build and push an image) then that
code will need to use the kind-registry:5000 HTTP endpoint directly, as the
code running inside your pod will not see the containerd config.
Pod manifests / pod specs / pod YAML should use localhost:5001,
which will be rerouted to match the same name as the host via the containerd config.
NOTE: A bit about "localhost" and containers ... "localhost" resolves to a loopback IP, which are network-namespace local. Network-namespace local means that the
127.0.0.1/localhost/::1inside your container is NOT the same as the one on your host (unless usinghostNetwork: true/--net=host).KIND nodes are not
--net=hostand most pods are not, so really these "localhosts" are local to your pod container, to your kind node, and to your host machine in most cases.However we can tell containerd that
localhost:5001should route to the registry container such that the same name works on both the host and your machine.We do this so you can conveniently push and pull from a "local" address on your host and in your pod YAML.