Skip to content
Another way to search the docker registry
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Build Status


docker-search: another way to search the docker registry.


This does not seem optimal:

$ docker search libavcodec

$ docker search ffmpeg
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
cellofellow/ffmpeg                                                              1                    [OK]
bfirsh/ffmpeg                                                                   0                    [OK]
robd/aws-ffmpeg                                                                 0                    [OK]
lmars/ffmpeg                    FFMpeg built from source (git://source.ffm...   0                    
link/ffmpeg-built               this has python devenv, a few other build ...   0                    
miovision/ffmpeg                                                                0                    
paulbrennan/ffmpeg                                                              0                    
cmark/ubuntu-ffmpeg                                                             0                    
mikehearn/ubuntu-ffmpeg                                                         0                    
cmark/ubuntu-ffmpeg-ssh                                                         0                    
cmark/ubuntu-14.04-ffmpeg-nfs                                                   0                    
asachs/docker-ffmpeg            Docker based FFMPEG - keeping the dependan...   0                    

Which of these have libavcodec? Do I have to manually go to and search through Dockerfiles?

How about this instead?

$ docker-search -filter=libavcodec ffmpeg
Name                          Description                   
----                          -----------                   

More about what is happening under the hood with the -verbose flag.

$ docker-search -filter=libavcodec -filter=quantal -verbose=true -dockerfile ffmpeg 
Query docker for ffmpeg
Query response received for: ffmpeg
Annotating image cellofellow/ffmpeg with Dockerfile
Annotating image bfirsh/ffmpeg with Dockerfile
Annotating image robd/aws-ffmpeg with Dockerfile
Annotating image lmars/ffmpeg with Dockerfile
Annotating image link/ffmpeg-built with Dockerfile
Annotating image miovision/ffmpeg with Dockerfile
Annotating image asachs/docker-ffmpeg with Dockerfile
Annotating image paulbrennan/ffmpeg with Dockerfile
Annotating image cmark/ubuntu-ffmpeg with Dockerfile
Annotating image mikehearn/ubuntu-ffmpeg with Dockerfile
Annotating image cmark/ubuntu-ffmpeg-ssh with Dockerfile
Annotating image cmark/ubuntu-14.04-ffmpeg-nfs with Dockerfile
Got dockerfile for: robd/aws-ffmpeg
Got dockerfile for: mikehearn/ubuntu-ffmpeg
Got dockerfile for: bfirsh/ffmpeg
Got dockerfile for: cellofellow/ffmpeg
Got dockerfile for: miovision/ffmpeg
Got dockerfile for: cmark/ubuntu-ffmpeg
Got dockerfile for: lmars/ffmpeg
Got dockerfile for: asachs/docker-ffmpeg
Got dockerfile for: link/ffmpeg-built
Got dockerfile for: cmark/ubuntu-14.04-ffmpeg-nfs
Got dockerfile for: paulbrennan/ffmpeg
Got dockerfile for: cmark/ubuntu-ffmpeg-ssh
Finished annotation of dockerfiles
Filtering dockerfiles
Found match for filter libavcodec of Dockerfile for image: bfirsh/ffmpeg
Found match for filter quantal of Dockerfile for image: bfirsh/ffmpeg
Found 1 results

Name:                         bfirsh/ffmpeg                 

FROM ubuntu:12.10
MAINTAINER Ben Firshman ""
RUN echo "deb quantal main universe" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get -y install ffmpeg libavcodec-extra-53


docker-search: A better way to search the docker registry

docker-search does a search against the Docker registry, and then pulls Dockerfiles for 
matching images, searching inside them for more details.


docker-search -filter=quantal -filter=avcodec ffmpeg  # Search for the string quantal AND avcodec in the Dockerfile
docker-search -dockerfile ffmpeg # print out full dockerfiles
docker-search -dockerfile -format=json ffmpeg # print out results as JSON, including dockerfiles 


  -annotate=true: Annotation with Dockerfile information (faster without but no second level search)
  -dockerfile=false: Print out dockerfiles
  -filter=: List of filters; you can have more than one (ANDed together)
  -format="table": Format the output: table or json
  -generate-config=false: Generate a new default configuration file
  -verbose=false: Output verbose messages (false)


go get

Or, download the source and install yourself.

Developer Details

docker-search works in three stages right now inside client.go

  • Query: query the docker index
  • Annotate: annotate the search result with scraped data, like Dockerfiles themselves
  • Filter: filter through the data based on interesting information

The Configuration File

NB: This is probably something I will remove soon, but for now. The IP address listed here was an internal IP to the docker server, but hardcoding the API endpoint seems like the way to go. I did not realize that docker search goes through the docker server as a proxy.

Why is there a configuration file? Well, the docker registry/index/hub search is a little confusing right now. The API documents indicated I should be able to use to search, but then all these requests are either 301 or 302. Something is wrong. So, I sniffed the traffic from docker search to see what they were using (with this command tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'). They were using a strange IP and port, and I got it working with the following cURL command curl -i I figured this would change soon, and did not want to hard code the URL into the app. So, docker-search uses a configuration file which you can edit if the backend changes or solidifies.

Contribution guidelines

Fork, write some tests, and submit a pull request. Thanks!

You can’t perform that action at this time.