Docker cookbook. Subir una imagen a nuestro Docker Registry privado

Docker Logo

La versión de docker utilizada para ejecutar los comandos de este artículo ha sido docker 1.12.0 en un sistema Ubuntu 16.04.1 LTS

Cuando empezamos a trabajar con Docker una de las primeras cosas que utilizaremos es el Docker Resgitry proporcionado por la gente de Docker y publicado en Docker Hub.

Como sabemos es la imagen utilizada para crear un contenedor donde subiremos nuestras imágenes de nuestros proyectos de forma privada. Eso si, con algunas limitaciones en cuanto a seguridad etc.

Como toda imagen subida a Docker Hub podemos disponer de ella y arrancar nuestro contenedor con un simple comando:

$ docker run -d -p 5000:5000 --name registry registry:2

Los pasos a seguir una vez tenemos nuestra imagen son muy sencillos. Basta con etiquetarla indicando el host del Docker Registry donde tiene que subir:

$ docker tag 5f7ca7e96e33 my-registry:5000/my-image:0.0.1-SNAPSHOT
$ docker push my-registry:5000/my-image:0.0.1-SNAPSHOT
The push refers to a repository [my-registry.com:5000/my-image]
Get https://my-registry.com:5000/v1/_ping:http: server gave HTTP response to HTTPS client

En este momento es cuando nos encontramos con la primera limitación de este Registry. No soporta la seguridad por SSL, y por lo tanto debemos decir a nuestro docker daemon que debe poder comunicarse con my-registry.com de forma no segura.

La configuración que debemos hacer es muy sencilla. Indicar el host de nuestro Registry, reiniciar el daemon y volver a subir la imagen

$ echo '{ "insecure-registries":["my-registry.com:5000"] }' > /etc/docker/daemon.json
$ sudo systemctl restart docker
$ docker push  my-registry.com:5000/my-image:0.0.1-SNAPSHOT
The push refers to a repository [my-registry.com:5000/my-image]
0d84ae38f138: Pushed
c18156f94ccc: Pushed
...
...
0.0.1-SNAPSHOT: digest: sha256:fceb6ceb9277761036ec670c1e23f30a3667441f98c54b4253c94737abb0b418 size: 4482

docker Cookbook, borrar todas las imagenes en estado dangling

Docker Logo

Cuando utilizamos docker terminaremos viendo imágenes que no están siendo utilizadas y que terminan ocupando espacio.

Al principio no tendremos este tipo de imágenes, pero según vayamos utilizando imágenes de docker o creando imágenes propias terminaremos viéndolas. Estas imágenes las identificaremos por el nombre del repositorio y del tag, que serán

<none>:<none>

y que las veremos lanzando el comando docker images.

$ docker images
REPOSITORY                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
...
<none>                                             <none>              47a4e50d9b35        18 hours ago        669.6 MB
<none>                                             <none>              8e2393b52fd9        18 hours ago        669.6 MB
<none>                                             <none>              8fb173d5c23c        18 hours ago        669.6 MB
<none>                                             <none>              19cb9c21f160        21 hours ago        669.5 MB
<none>                                             <none>              9cf1c0068503        21 hours ago        669.5 MB
<none>                                             <none>              27c02a9fda80        21 hours ago        669.5 MB
<none>                                             <none>              b2d384eb6f23        6 days ago          669.5 MB
<none>                                             <none>              ae0dbc713400        6 days ago          669.5 MB
...

Como vemos por el nombre del repository y del tag tenemos imágenes en estado dangling.

Listado de todas la imágenes en estado dangling

Si queremos ver solamente las imágenes en estado danglin lo podemos hacer con un simple comando.

$ docker images -f "dangling=true"

Borrar todas las imágenes en estado dangling

Y para liberar y recuperar el espacio ocupado por esta imágenes lo haremos igualmente con un comando de docker.

$ docker rmi $(docker images -f "dangling=true" -q)

Referencia

Este artículo lo hemos basado en What are Docker : images?