Instalar y Configurar Docker Registry en Centos 7
Cuando lleváis Docker a vuestra empresa, hay que llevarlo con ciertas buenas prácticas, como intentar crear un repositorio de imágenes sobre los contenedores que trabajarán el equipo de desarrolladores. De forma que estén disponibles en una plataforma separada y segura.
Para eso existe Docker Registry, y hoy vamos a enseñaros como instalarlo bajo Centos 7. Existen alternativas de pago en varios de los servicios cloud más destacados, como puede ser Amazon con Amazon Elastic Container Registry (ECS) o Microsoft con Azure Container Registry, pero vamos a crear un Docker Registry en la infraestructura local.
Como siempre empezamos actualizando el sistema operativo:
1 |
yum clean all && yum install -y update |
Una vez parcheado, comenzamos la instalación del componente de la siguiente forma:
1 |
yum -y install docker-distribution |
La configuración de docker registry la podéis encontrar en “/etc/docker-distribution/registry/config.yml”. Aquí podréis cambiar el directorio base o el puerto donde escuchará el servicio o demonio:
1 2 3 4 5 6 7 8 9 10 11 |
version: 0.1 log: fields: service: registry storage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 |
Acordaros que necesitaréis abrir el puerto que vayáis a utilizar si hay Iptables, os dejo la entrada donde explicamos como hacerlo:
Parar, arrancar, habilitar y deshabilitar Firewalld en Centos 7
Habilitamos y arrancamos el servicio o demonio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@centos ~]# systemctl start docker-distribution [root@centos ~]# systemctl enable docker-distribution Created symlink from /etc/systemd/system/multi-user.target.wants/docker-distribution.service to /usr/lib/systemd/system/docker-distribution.service. [root@centos ~]# systemctl status docker-distribution ● docker-distribution.service - v2 Registry server for Docker Loaded: loaded (/usr/lib/systemd/system/docker-distribution.service; enabled; vendor preset: disabled) Active: active (running) since jue 2019-05-02 12:32:34 CEST; 15s ago Main PID: 64649 (registry) CGroup: /system.slice/docker-distribution.service └─64649 /usr/bin/registry serve /etc/docker-distribution/registry/config.yml may 02 12:32:34 centos.negu.local systemd[1]: Started v2 Registry server for Docker. may 02 12:32:34 centos.negu.local registry[64649]: time="2019-05-02T12:32:34+02:00" level=warning msg="No HTTP secret provided - generated random secr... may 02 12:32:34 centos.negu.local registry[64649]: time="2019-05-02T12:32:34+02:00" level=info msg="redis not configured" go.version=go1.9.4 i...unknown" may 02 12:32:34 centos.negu.local registry[64649]: time="2019-05-02T12:32:34+02:00" level=info msg="Starting upload purge in 15m0s" go.version...unknown" may 02 12:32:34 centos.negu.local registry[64649]: time="2019-05-02T12:32:34+02:00" level=info msg="using inmemory blob descriptor cache" go.v...unknown" may 02 12:32:34 centos.negu.local registry[64649]: time="2019-05-02T12:32:34+02:00" level=info msg="listening on [::]:5000" go.version=go1.9.4...unknown" Hint: Some lines were ellipsized, use -l to show in full. |
Por defecto, trabaja sobre https, si queréis evitar la instalación de una CA y que sea posible conectaros sobre registry inseguros o sin certificado, deberéis añadir la siguiente línea:
1 2 3 4 |
[root@centos ~]# vi /etc/docker/daemon.json { "insecure-registries" : ["centos.negu.local:5000"] } |
Reiniciamos el servicio de docker:
1 |
systemctl restart docker |
Las imágenes en Docker Registry se almacenan en:
1 |
ls /var/lib/registry/docker/registry/v2/repositories |
Ahora una vez configurado, vamos a realizar una prueba. Descargamos una imagen:
1 2 3 4 5 6 |
[root@centos ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos 8ba884070f61: Pull complete Digest: sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861 Status: Downloaded newer image for centos:latest |
Ahora crearemos una etiqueta de la imagen al registry:
1 |
[root@centos ~]# docker tag centos centos.negu.local:5000/centos |
Ahora hacemos un Push de la imagen del registry:
1 2 3 4 |
[root@centos ~]# docker push centos.negu.local:5000/centos The push refers to repository [centos.negu.local:5000/centos] d69483a6face: Pushed latest: digest: sha256:ca58fe458b8d94bc6e3072f1cfbd334855858e05e1fd633aa07cf7f82b048e66 size: 529 |
Comprobamos que la imagen existe:
1 2 |
[root@centos ~]# ls /var/lib/registry/docker/registry/v2/repositories centos |
Para lanzar la imagen desde nuestro propio repositorio la llamamos de la siguiente forma:
1 2 3 4 5 |
[root@centos ~]# docker pull centos.negu.local:5000/centos Using default tag: latest latest: Pulling from centos Digest: sha256:ca58fe458b8d94bc6e3072f1cfbd334855858e05e1fd633aa07cf7f82b048e66 Status: Image is up to date for centos.negu.local:5000/centos:latest |
Si queréis borrar la remotamente:
1 |
[root@centos ~]# docker image remove centos.negu.local:5000/centos |
Docker Registry se puede parar como un Docker al uso estando en local, por ejemplo:
1 |
[root@centos ~]# docker container stop registry && docker container rm -v registry |
Si vais a utilizar Docker Registry en vuestra infraestructura, será necesario que se lance automáticamente al reiniciar el servicio de Docker:
1 |
[root@centos ~]# docker run -d -p 5000:5000 --restart=always --name registry registry:2 |
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?