Docker Registry es una aplicación de software que le permite crear y almacenar sus imágenes dentro de su organización.
También puede crear y cargar sus imágenes en el Docker Registro público Hub. Sin embargo, estas imágenes se vuelven públicas y cualquiera puede acceder a ellas y utilizarlas. Por lo tanto, se recomienda utilizar el registro privado de Docker que le permite controlar y proteger sus imágenes.
En este tutorial, voy a explicar cómo configurar un registro privado de Docker en Ubuntu 18.04.
Requirements
- Dos servidores Ubuntu con las credenciales raíz
- Una dirección IP estática en ambos servidores
Getting Started
Antes de comenzar, deberá configurar la resolución de nombres de host en ambos sistemas. Entonces, ambos sistemas pueden comunicarse entre sí por nombre de host.
Para hacerlo, ejecute el siguiente comando en ambos sistemas:
echo "192.168.0.100 server" >> /etc/hosts
echo "192.168.0.102 client" >> /etc/hosts
Una vez que haya terminado, puede continuar con el siguiente paso.
Install Docker
A continuación, deberá instalar el paquete Docker en ambos sistemas. De forma predeterminada, Docker no está disponible en el repositorio predeterminado de Ubuntu 18.04. Por lo tanto, deberá agregarlos.
Primero, instale los paquetes requeridos con el siguiente comando:
apt-get install apt-transport-https software-properties-common ca-certificates curl -y
A continuación, agregue el repositorio de Docker con el siguiente comando:
wget https://download.docker.com/linux/ubuntu/gpg
apt-key add gpg
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | tee /etc/apt/sources.list.d/docker.list
A continuación, actualice el repositorio e instale Docker con el siguiente comando:
apt-get update -y
apt-get install docker-ce -y
Una vez que se haya completado la instalación, verifique el estado de la ventana acoplable con el siguiente comando:
systemctl status docker
Debería ver el siguiente resultado:
docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-05-01 15:08:45 UTC; 7min ago Docs: https://docs.docker.com Main PID: 2658 (dockerd) Tasks: 8 CGroup: /system.slice/docker.service └─2658 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Install Docker Registry Container
Primero, deberá instalar el contenedor de registro en su sistema de servidor. Puede hacerlo ejecutando el siguiente comando:
docker pull registry
Una vez que se haya descargado la imagen de registro, debería ver el siguiente resultado:
Using default tag: latest
latest: Pulling from library/registryc
87736221ed0: Pull complete
1cc8e0bb44df: Pull complete
54d33bcb37f5: Pull complete
e8afc091c171: Pull complete
b4541f6d3db6: Pull complete
Digest: sha256:3b00e5438ebd8835bcfa7bf5246445a6b57b9a50473e89c02ecc8e575be3ebb5
Status: Downloaded newer image for registry:latest
A continuación, inicie el contenedor de registro con el siguiente comando:
docker run -d -p 5000:5000 --restart=always --name registry registry
Puede ver el contenedor de registro en ejecución con el siguiente comando:
docker ps
Debería ver el siguiente resultado:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4912e461745f registry "/entrypoint.sh /etc…" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp registry
Create a Docker Container Image on the Client System
Su servidor de registro ya está listo para usarse. Es hora de crear una imagen de contenedor de Docker en el sistema cliente.
Primero, inicie sesión en el sistema del Cliente y cree un archivo docker para construir la imagen del servidor web Nginx:
mkdir Image
cd Image
nano dockerfile
Agregue las siguientes líneas:
FROM ubuntu:18.04
LABEL project="Nginx Web Server Image"
LABEL maintainer "hitjethva@gmail.com"
RUN \a
pt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
# Define working directory.WORKDIR /etc/nginx
# Define default command.CMD ["nginx"]
# Expose ports.
EXPOSE 80
EXPOSE 443
Guarde y cierre el archivo. Luego, cree una imagen de Nginx ejecutando el siguiente comando:
docker build -t ubuntu:nginx .
Después de crear la imagen de Nginx correctamente, debería ver el siguiente resultado:
---> bc6e61406108
Step 5/9 : VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
---> Running in 30832b7ff816
Removing intermediate container 30832b7ff816
---> 1940ec1c2225Step 6/9 : WORKDIR /etc/nginx
---> Running in 88755ef2d7c8
Removing intermediate container 88755ef2d7c8
---> 4fe930c96a73Step 7/9 : CMD ["nginx"]
---> Running in c8d492317d88
Removing intermediate container c8d492317d88
---> 3218acfd15f8Step 8/9 : EXPOSE 80
---> Running in 35921ef45db9Removing intermediate container 35921ef45db9
---> a6a299b86a6dStep 9/9 : EXPOSE 443
---> Running in 755441cefe2f
Removing intermediate container 755441cefe2f
---> 9be7dc6b0825
Successfully built 9be7dc6b0825
Successfully tagged ubuntu:nginx
A continuación, puede verificar la imagen generada con el siguiente comando:
docker images
Debería ver su imagen nginx en el siguiente resultado:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu nginx 9be7dc6b0825 About a minute ago 161MB
ubuntu 18.04 d131e0fa2585 4 days ago 102MB
registry latest f32a97de94e1 7 weeks ago 25.8MB
A continuación, deberá cambiar el nombre de su imagen nginx en formato “registryserver: número de puerto / nombre de imagen: etiqueta”.
Puedes hacerlo con el siguiente comando:
docker tag ubuntu:nginx server:5000/ubuntu:nginx
Upload Nginx Image on Private Registry Server
Ahora puede cargar su imagen Nginx generada en el servidor de registro privado usando el comando push:
docker push server:5000/ubuntu:nginx
Una vez que la imagen se cargó correctamente, debería ver el siguiente resultado:
The push refers to repository [server:5000/ubuntu]
2e5us8en4s9d: Pushed
l1is9e9d8j7e: Pushed
nginx: digest: sha256:aa0d8fi49dir0d7rn33nee122b size: 1862
También puede descargar la imagen cargada desde el servidor de registro con el siguiente comando:
docker pull server:5000/ubuntu:nginx
Espero que ahora tenga el conocimiento suficiente para configurar su propio servidor de registro Docker privado en un servidor de producción. Si está buscando obtener más experiencia en Docker, consulte este curso en línea.