# 4.1.- Buscar imágenes en Docker Hub.

Podemos buscar imágenes Docker directamente desde la línea de comandos, para ello usaremos el comando docker search. Este comando se comunica con Docker Hub (o cualquier otro registro Docker que estés utilizando) y nos mostrará un listado de las imágenes que coinciden con el término de búsqueda proporcionado.

Por ejemplo, si estamos buscando una imagen del servidor web Nginx, podríamos usar el siguiente comando:

    docker search nginx

Al ejecutarlo, obtendremos una lista de imágenes relacionadas con Nginx disponibles en Docker Hub. La lista incluirá detalles como el nombre de la imagen, una descripción, y si la imagen es oficial o no.

Manuel J. Rodríguez. Docker search (Dominio público)

Es importante recordar que para poder usar este comando, necesitas tener Docker instalado en tu máquina y tener acceso a internet para poder comunicarte con Docker Hub.

Este comando es muy útil cuando no estás seguro del nombre exacto de la imagen que necesitas o cuando quieres explorar las diferentes opciones disponibles para un tipo específico de software.

En el listado del resultado de la búsqueda podemos ver que la descripción de las imágenes aparece truncada. Podemos hacer uso de la opción --no-trunc para poder visualizar la descripción completa de cada una de las imágenes.

    docker search nginx --no-trunc

Por defecto, cada búsqueda devolverá un máximo de 25 resultados. Pero es posible incrementar el número de resultados de la búsqueda utilizando el flag --limit. Este flag nos permite indicar un número entre 1 y 100.

Veamos ahora un ejemplo esta vez buscando la imagen de Alpine Linux, que es una distribución de Linux muy ligera:

## docker search alpine --limit 100 (haz clic aqui para ver el resultado)

    user@mrodara538:~$ docker search alpine --limit 100
    NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    alpine                             A minimal Docker image based on Alpine Linux…   9941      [OK]
    alpinelinux/docker-cli             Simple and lightweight Alpine Linux image wi…   7
    alpinelinux/alpine-gitlab-ci       Build Alpine Linux packages with Gitlab CI      3
    alpinelinux/gitlab-runner-helper   Helper image container gitlab-runner-helper …   2
    alpinelinux/alpine-drone-ci        Build Alpine Linux packages with drone CI       0
    alpinelinux/apkbuild-lint-tools    Tools for linting APKBUILD files in a CI env…   0
    alpinelinux/unbound                                                                3
    alpinelinux/docker-compose         docker-compose image based on Alpine Linux      0
    alpinelinux/gitlab-runner          Alpine Linux gitlab-runner (supports more ar…   4
    alpinelinux/docker-alpine                                                          0
    alpinelinux/docker-abuild          Dockerised abuild                               0
    alpinelinux/ansible                Ansible in docker                               0
    alpinelinux/rsyncd                                                                 0
    alpinelinux/darkhttpd                                                              1
    alpinelinux/golang                 Build container for golang based on Alpine L…   1
    alpinelinux/build-base             Base image suitable for building packages wi…   0
    alpinelinux/mqtt-exec                                                              0
    rancher/alpine-git                                                                 1
    grafana/alpine                     Alpine Linux with ca-certificates package in…   4
    alpinelinux/package-builder        Container to build packages for a repository    1
    alpinelinux/git-mirror-syncd                                                       0
    alpinelinux/mirror-status                                                          0
    alpinelinux/alpine-docker-gitlab   Gitlab running on Alpine Linux                  0
    alpinelinux/zabbix-ci              Minimal Zabbix web-frontend images for use i…   0
    alpinelinux/aports-qa-bot          A Gitlab bot that gives feedback on aports m…   0
    alpinelinux/gitlab                 Alpine Linux based Gitlab image                 2
    alpinelinux/turbo-paste            Alpine Linux paste service                      0
    alpinelinux/secdb                                                                  0
    alpinelinux/mariadb                                                                0
    alpinelinux/abuild-ci              CI environment to test abuild                   0
    kasmweb/alpine-317-desktop         Alpine 3.17 desktop for Kasm Workspaces         0
    alpinelinux/gitlab-shell           Alpine Linux based gitlab-shell image, provi…   0
    alpinelinux/netbox                 dockerized netbox                               0
    alpinelinux/uacme-nsd-wildcard                                                     0
    alpinelinux/webhook                                                                0
    alpinelinux/aports-turbo                                                           0
    alpinelinux/lua-turbo                                                              0
    alpinelinux/gitaly                 Alpine Linux based Gitaly image                 0
    alpinelinux/appstream-generator                                                    0
    surnet/alpine-wkhtmltopdf          wkhtmltopdf compiled on Alpine Linux            14                   [OK]
    alpinelinux/alpine-www             The Alpine Linux public website (www.alpinel…   0
    linuxkit/alpine                    LinuxKit alpine base image                      4
    dockage/alpine                     Alpine image that forms the base for Dockage…   1
    jitesoft/alpine                    Alpine Linux.                                   1
    surnet/alpine-node-wkhtmltopdf     wkhtmltopdf compiled on Alpine Linux with No…   3                    [OK]
    dockette/alpine                    My Custom Alpine Linux                          2                    [OK]
    alpinelinux/kas                    Gitlab Kubernetes Agent Server                  0
    surnet/alpine-python-wkhtmltopdf   wkhtmltopdf compiled on Alpine Linux with Py…   5                    [OK]
    paperist/alpine-texlive-ja         Minimal TeX Live image for Japanese based on…   28                   [OK]
    ustclug/alpine                     Official Alpine Image with USTC Mirror          0
    dockage/alpine-nginx-php-fpm       Docker Nginx & PHP-FPM image built on Alpine…   8                    [OK]
    treehouses/alpine                                                                  2
    corpusops/alpine-bare              https://github.com/corpusops/docker-images/     0
    adoptopenjdk/alpine3_build_image                                                   1
    treehouses/alpine-tags                                                             0
    pandoc/alpine                      DEPRECATED; use pandoc/core instead.            3
    dockage/alpine-php-fpm             Docker PHP-FPM image built on Alpine Linux      0                    [OK]
    intel/alpine                                                                       0
    dockage/alpine-runit               Docker image uses runit as a process supervi…   1                    [OK]
    pandoc/alpine-latex                DEPRECATED: use pandoc/latex images.            2
    jitesoft/alpine-ssh                Alpine with ssh client installed.               1                    [OK]
    eclipse/alpine_jdk8                Based on Alpine 3.3. JDK 1.8, Maven 3.3.9, T…   1                    [OK]
    openebs/alpine-fio                 Retagged from dmonakhov/alpine-fio              0
    linuxkit/alpine-build-kernel       This repository is no longer used               1
    pandoc/alpine-crossref             DEPRECATED: use pandoc/core instead.            1
    betterweb/alpine                   Just a simple and up to date alpine build fo…   0
    machines/alpine                                                                    0
    docker/desktop-kubernetes          Kubernetes binaries for Desktop. Compiled fr…   17
    fsfe/alpine-pipenv                                                                 0
    puppet/r10k                        r10k on a Docker image. Based on Alpine         4
    puppet/puppet-agent-alpine         Puppet Agent as a Docker Image. Based on Alp…   17
    drud/alpine                                                                        0
    surnet/alpine-node-opencv                                                          0
    mercureimaging/alpine-sshd                                                         0
    jitesoft/alpine-pass               Alpine linux with pass installed from source.   2                    [OK]
    docker/tutum-test-alpine           Alpine 3.12 image                               0
    surnet/alpine-opencv                                                               0
    ciready/alpine                     CI-ready Alpine Linux images with C-related …   0
    linuxkit/alpine-build-toybox                                                       0
    librenms/librenms                  LibreNMS Docker image based on Alpine Linux …   117
    privatebin/nginx-fpm-alpine        PrivateBin running on an Nginx, php-fpm & Al…   72                   [OK]
    dockage/tor-privoxy                Docker Tor proxy (http and shell) built on A…   27                   [OK]
    kasmweb/core-alpine-317            Alpine 3.17 base image for Kasm Workspaces      0
    armswdev/c-hello-world             Simple hello-world C program on Alpine Linux…   0
    jitesoft/composer                  PHP and Composer on alpine linux.               5                    [OK]
    jitesoft/php                       PHP on alpine linux                             0
    jitesoft/node                      Node.js on Alpine Linux.                        1
    jitesoft/node-base                 NodeJs from source running on alpine Linux.     1                    [OK]
    privatebin/pdo                     PrivateBin on Nginx, php-fpm & Alpine with P…   0
    anonaddy/anonaddy                  AnonAddy Docker image based on Alpine Linux …   12
    privatebin/fs                      PrivateBin on Nginx, php-fpm & Alpine with f…   3
    webdevops/ansible                  Ansible image for CentOS, Ubunty, Debian and…   7                    [OK]
    primeimages/rust                   Alpine with Rust installed                      0
    jitesoft/phpunit                   PHPUnit (with php and xdebug) running on alp…   2                    [OK]
    jitesoft/node-yarn                 Alpine linux with nodejs and yarn.              7                    [OK]
    jitesoft/kubectl                   Kubectl on Alpine Linux                         2
    eclipse/rdf4j-workbench            Dockerfile for Eclipse RDF4J Server and Work…   6
    fluxcd/gitsrv                      Alpine git server used for Flux end-to-end t…   0
    dockette/docker                    Docker + Docker Compose on Alpine Linux         1                    [OK]
    divax/i2p-reseed                   I2P Reseed Server. Alpine based, lightweight…   4

# Debes conocer

Docker Hub nos informa de cuales son las imágenes oficiales. Por seguridad, se recomienda hacer uso exclusivamente de las imágenes oficiales.Puedes encontrar más información sobre las imágenes oficiales de Docker en la documentación de la web oficial.

Las imágenes que aparecen marcadas como AUTOMATED son imágenes que DockerHub ha generado automáticamente a partir del código fuente de un repositorio externo y se han enviado a los repositorios de Docker. Puedes encontrar más información sobre los builds automáticos en la documentación oficial de Docker.

También podemos utilizar filtros en nuestras búsquedas, aunque los únicos filtros que podemos realizar desde la terminal están basados en las siguientes condiciones:

- stars=(number)
- is-automated=(true|false)
- is-official=(true|false)

Por ejemplo, vamos a buscar una imagen de alpine que tenga al menos 10 estrellas y que además sea oficial:

    dockear search --filter stars=10 --filter is-official=true alpine

Manuel J. Rodríguez. Docker search filter (Dominio público)

# Para saber más

Hemos visto que docker search sólo nos permite realizar tres tipos de filtros, sin embargo en la web oficial de Docker Hub tenemos la posibilidad de utilizar otros filtros diferentes. Utiliza la web oficial para conocer cuáles son las imágenes de Docker más populares y realiza algunas búsquedas.

Algunas imágenes de Docker que podemos destacar por su popularidad son las siguientes:

- alpine: Linux reducido
- nginx: Servidor web Nginx
- httpd: Servidor web Apache
- ubuntu: Ubuntu
- redis: Base de datos Redis (clave-valor)
- mongo: Base de datos MongoDB (documentos)
- mysql: Base de datos MySQL (relacional)
- postgres: Base de datos PostgreSQL (relacional)
- node: Node.js
- registry: Registro de imágenes on-premise
- php, haproxy, wordpress, rabbitmq, python, openjdk, tomcat, jenkins, redmine, elasticsearch…

# Autoevaluación

# Pregunta 1

El comando docker search permite el uso de filtros para limitar los resultados de la búsqueda.

Verdadero Falso

# Retroalimentación

Verdadero

El comando docker search admite el uso de filtros para restringir la búsqueda. Por ejemplo, puedes filtrar los resultados por puntuación de estrellas utilizando la opción --filter stars=n, donde n es el número mínimo de estrellas que una imagen debe tener. También puedes filtrar por automatización de construcción utilizando --filter is-automated=(true|false). Estos filtros pueden ayudarte a encontrar la imagen más adecuada para tus necesidades.

Creado con eXeLearning (Ventana nueva)