Les imatges de Docker són essencialment una instantània d'un contenidor. Les imatges es creen amb l'ordre build, que creen un contenidor quan s'inicia amb run. Un cop creada una imatge, es pot emmagatzemar al Hub Docker.
En aquest tutorial, explorarem les imatges de Docker amb l'enfocament següent:
- Administració d'imatges localment al nostre amfitrió.
- Creació d'imatges bàsiques.
- Càrrega d'imatges a Hub Docker.
Requisits
Alguna distribució de GNU/Linux amb Docker instal·lat. Si no saps com instal·lar Docker al teu Linux, aquí t'expliquem com fer-ho.
Cerca d'imatges de Docker
Una de les característiques més importants de Docker és que tothom pot crear imatges per a tota mena de finalitats. Algunes es pugen a Docker Hub, on estaran a la nostra disposició i les podrem descarregar. A més, a Docker Hub també trobarem imatges oficials, a banda de les imatges de tercers.
Per exemple, buscarem una imatge de GitLab:
Com podem observar, Docker ens ofereix moltes possibilitats. Generalment, és recomanable instal·lar imatges oficials o que tinguin una puntuació alta.
Descarregar imatges de Docker
Docker descarregarà automàticament qualsevol imatge que li demanem. L'ordre docker pull permet descarregar la imatge més recent d'aquest repositori. Tanmateix, es pot especificar quina versió de la imatge volem descarregar.
Per exemple, si volem descarregar Ubuntu 15.04 ho podrem fer amb:
# docker pull ubuntu:15.04Si, per contra, volem descarregar l'última versió que hi hagi al repositori, només haurem d'escriure:
# docker pull gitlab/gitlab-ceLlistar imatges
Per obtenir una llista de totes les imatges disponibles per muntar en un contenidor, és a dir, les imatges que hem descarregat, hem d'executar el següent:
# docker imagesAmb aquesta ordre podrem veure el repositori de la imatge, la versió (TAG), l'ID de la imatge, quan es va crear i la mida completa de la imatge.
Actualització i creació d'imatges
Si volem fer canvis en una imatge concreta, haurem de crear un contenidor de la imatge:
# docker run -t -i ubuntu /bin/bashCom podrem observar, l'indicador d'ordres haurà canviat per l'ID del contenidor:
Ara instal·larem diversos paquets per crear una imatge pròpia:
# apt install wget nano apache2Un cop hagi acabat la instal·lació d'aquests paquets, sortirem del contenidor amb l'ordre exit.
El que tenim ara és un contenidor basat en la instància d'Ubuntu modificat per nosaltres. Ara crearem una còpia d'aquest contenidor en una imatge amb el nom d' apache-ubuntu. Per fer-ho, primer hem de buscar l'ID del contenidor:
# docker ps -aUn cop hem obtingut l'ID, creem la nova imatge amb el nom apache-ubuntu executant l'ordre següent:
# docker commit [ID_container] apache-ubuntuPer verificar que la nostra imatge s'ha creat correctament:
# docker imagesEliminar imatges
Per eliminar una imatge, per exemple la que hem creat a l'apartat anterior, només hem d'executar aquesta ordre:
# docker image rm apache-ubuntuCrear una imatge amb un DockFile
Es poden generar imatges a partir de Dockerfiles, uns fitxers que crearem manualment i que contindran una seqüència d'instruccions que, per mitjà d'una imatge base, ens permet crear-ne d'altres.
Per crear un Dockerfile ens cal un editor de text i conèixer prèviament la sintaxi de les ordres per poder construir després la imatge.
Crearem un fitxer anomenat Dockerfile (sense cap extensió):
# touch DockerfileI hi afegirem el següent:
FROM ubuntu
LABEL maintainer=cloudingtutos
ENV HOME=/root
RUN apt-get update && apt-get install -y apache2 wget
ENV APACHE_RUN_USER=www-data
ENV APACHE_RUN_GROUP=www-data
ENV APACHE_LOG_DIR=/var/log/apache2
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Un cop creat, farem un build de la imatge base amb el nostre fitxer Dockerfile:
# docker build -t ubunpache .L'estructura d'aquesta ordre és: docker build -t [NombreDeLaImagen] /path/directorioDelDockFile/
I si mostrem la llista de les nostres imatges:
Publicar una imatge a Docker Hub
Docker Hub és un repositori on mantenir imatges de Docker de manera pública o privada. D'aquesta manera podrem desar les imatges que hàgim creat nosaltres. Docker Hub proporciona moltes característiques, com ara un repositori per a imatges de Docker, autenticacions d'usuaris, compilacions d'imatges automatitzades, integració amb GitHub i gestió de grups.
Per treballar amb Docker Hub, hauràs de crear un compte a l' enllaç següent. Després de verificar l'adreça de correu electrònic, es completarà el registre. Ara ja podrem començar a publicar imatges al nostre repositori.
Abans de pujar una imatge a Docker Hub, és important assignar-li una etiqueta. Per fer-ho, primer haurem d'identificar l'ID de la imatge:
# docker tag e6df1a72e3e5 cloudingtutos/apache-instance:ubuntuUn cop etiquetada, passem a fer un push:
# docker push cloudingtutos/apache-instance:ubuntu
I si hi accedim via web, podrem observar que tenim una imatge: