Relic Solution: Using the Containerized Private Minion with a Private Image Registry

Currently we have the Containerized Private Minion image hosted on the image registry by default, or alternatively on docker hub:

If you use an alternative registry like docker hub, you’ll need to also set the environment variable MINION_DOCKER_RUNNER_REGISTRY_ENDPOINT so that minion is able to pull the synthetics-minion-runner image from the same registry when it starts up.

The synthetics-minion-runner is the image that is used for runner containers which Scripted and Browser monitor checks are performed in. More on runners here:

If your network environment though requires explicit allow listing of external IPs this can become a problem as both and docker hub use CDNs to distribute image resources.

An alternative then is to obtain the synthetics-minion and synthetics-minion-runner images on an intermediate device outside of that network context, and then host them in private registry in the locked down context.

To demonstrate this process we can use the docker registry image

Create a registry - for local demonstration

docker run -d -p 5000:5000 --restart=always --name test-registry registry:2

Pull synthetics-minion from

docker pull

Tag the synthetics-minion image for the new registry

docker tag  localhost:5000/newrelic/synthetics-minion:2.2.15

Push synthetics-minion to the new registry

docker push localhost:5000/newrelic/synthetics-minion:2.2.15

Pull synthetics-minion-runner from Note the runner has to be the same version as the minion

docker pull

Tag synthetics-minion-runner image for the new registry

docker tag localhost:5000/newrelic/synthetics-minion-runner:2.2.15

Push synthetics-minion-runner to the new registry

docker push localhost:5000/newrelic/synthetics-minion-runner:2.2.15

Run the minion

docker run -d -e  MINION_PRIVATE_LOCATION_KEY=<your-location-key> \ 
 -e "MINION_LOG_LEVEL=debug"  \
 -v /tmp:/tmp:rw  \
 -v /var/run/docker.sock:/var/run/docker.sock:rw \
 -p 8080:8080 -p 8180:8180 \

More on deploying a private registry here: Deploy a registry server | Docker Documentation


These steps work ok for 2.2.5 but for 3.0.48 they generate this error

2021-07-20 14:42:17,352 - Docker Runner Image synthetics-minion-runner:3.0.48 does not exist: Trying to pull localhost:5000/synthetics-minion-runner:3.0.48…
2021-07-20 14:42:17,370 - Docker Runner Image synthetics-minion-runner:3.0.48 was not able to be pulled from localhost:5000/synthetics-minion-runner:3.0.48.
2021-07-20 14:42:17,372 - Full error message: ! com.spotify.docker.client.exceptions.ImageNotFoundException: Image not found: localhost:5000/synthetics-minion-runner:3.0.48

Has something changed for MINION_DOCKER_RUNNER_REGISTRY_ENDPOINT on newer versions ?

1 Like

Hey @dconnolly,

Thanks for writing about that! In CPM release 3.0.30 we removed the hard-coded newrelic from the image path. The minion now looks for a runner image name tagged like:

docker tag localhost:5000/synthetics-minion-runner:3.0.48

More details here:

1 Like