Using the Docker daemon

How to access the Docker daemon within minikube


You must be using minikube with the container runtime set to Docker. This is the default setting.

Method 1: Without minikube registry addon

When using a single VM of Kubernetes it’s really handy to reuse the Docker daemon inside the VM; as this means you don’t have to build on your host machine and push the image into a docker registry - you can just build inside the same docker daemon as minikube which speeds up local experiments.

To be able to work with the docker daemon on your mac/linux host use the docker-env command in your shell:

eval $(minikube docker-env)

You should now be able to use docker on the command line on your host mac/linux machine talking to the docker daemon inside the minikube VM:

docker ps

Remember to turn off the imagePullPolicy:Always, as otherwise Kubernetes won’t use images you built locally.

Possible errors and solutions

Docker may report following forbidden error if you are using http proxy and the $(minikube ip) is not added to no_proxy/NO_PROXY:

error during connect: Get Forbidden

On Centos 7, docker may report the following error:

Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory

The fix is to update /etc/sysconfig/docker to ensure that minikube’s environment changes are respected:

< DOCKER_CERT_PATH=/etc/docker
> if [ -z "${DOCKER_CERT_PATH}" ]; then
>   DOCKER_CERT_PATH=/etc/docker
> fi

When you’re using a docker installed via snap on a distribution like Ubuntu that uses AppArmor profiles the following error may appear:

could not read CA certificate "/home/USERNAME/.minikube/certs/ca.pem": open /home/USERNAME/.minikube/certs/ca.pem: permission denied

The solution is to allow docker to read the minikube certificates by adding a line in /var/lib/snapd/apparmor/profiles/snap.docker.docker file:

# allow docker to read minikube certificates
owner @{HOME}/.minikube/certs/* r,

After that check for syntax errors and try again:

sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.docker.docker
eval $(minikube docker-env)
docker ps