Docker images are stored like this in Nexus:
The blobs are docker layers, and they can (and often are) shared between multiple docker images. This sharing of layers is the reason why docker is an efficient format for storing VM's. The upshot of this is that you can't restrict access to layers. So you'll need to create a content selector privilege that allows access to all layers. Additionally, you need to allow access to "/v2/" for docker login, and "/v1/search" for search". And finally, for anonymous access to work you'll need to allow access to the bearer token resource. The simplest way to accomplish all of this is to allow access to everything except for the /v2/library paths where the manifests and tags are stored:
path =~ "(?!/v2/library/).*"
The above is a negated regular expression match, so it will match anything that doesn't start with /v2/library/.
After this, you can selectively allow access to manifests and tags by using content selectors like this:
path =^ "/v2/library/some-docker-image/"