En CoreOS, configure su propio registro de Docker

Todos conocemos y amamos Docker, una plataforma para crear, administrar y distribuir contenedores de aplicaciones en múltiples máquinas. Docker Inc. proporciona un servicio para alojar contenedores de código abierto para descargar (o extraer) como un repositorio git conocido como el "Registro Docker". Piense en ello como un GitHub para contenedores Docker.

Pero, ¿qué sucede si desea alojar su propio registro separado del público? Bueno, Docker Inc. ha abierto su aplicación de registro en GitHub.

Este tutorial lo llevará a través del proceso de configuración de un registro Docker privado usando CoreOS en un nuevo VPS.

CoreOS + Docker

No pasaremos mucho tiempo repasando exactamente lo que Docker y CoreOS pueden hacer, ya que está fuera del alcance de este tutorial. En esencia, CoreOS está diseñado para clústeres de servidores masivos, es pequeño, rápido y recibe actualizaciones de seguridad periódicas automáticamente. Su sistema de archivos raíz también es de solo lectura, lo que significa que debe usar Docker para ejecutar cualquier tipo de software que no esté incluido en la instalación base.

¡Esto hace que Core OS sea un sistema host perfecto para Docker!

Tirando y ejecutando el último registro

Docker Inc. ha proporcionado el Registro como una imagen de nivel superior, esto significa que podemos desplegarlo con un simple:

docker pull registry

Esto puede demorar unos minutos dependiendo de la velocidad de conexión.

Una ventaja de ser una imagen de nivel superior también significa que recibe soporte y actualizaciones regulares.

Ahora probemos el registro. Podemos crear un nuevo contenedor utilizando la imagen de registro:

docker run -p 5000:5000 -d --name=basic_registry registry

Para aquellos que no han usado Docker demasiado, la -pbandera significa PORT, lo que significa que estamos exponiendo el puerto 5000 desde el contenedor al puerto host 5000.

La -dbandera significa daemon, esto hará que el contenedor se ejecute en segundo plano y no imprima la salida a la sesión SSH actual, también queremos nombrar este contenedor de prueba básico usando la --nameopción para que podamos administrarlo fácilmente más tarde.

Asegúrese de que su contenedor de registro básico se esté utilizando docker ps. El resultado debería ser similar a:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Además, visite http://YOUR_IP:5000su navegador web y debería recibir un mensaje como el siguiente:

"docker-registry server (dev) (v0.8.1)"

Observe la palabra deventre paréntesis. Esto significa que el servidor está ejecutando actualmente la configuración de desarrollo. Veremos más configuraciones pronto.

¡Ahora tiene su propio registro de contenedor (muy básico) en ejecución! Pero aún no hemos terminado.

Tal vez desee mantener esto privado de miradas indiscretas, o tal vez almacenar sus imágenes en Amazon S3 en lugar de almacenamiento local. Repasemos las diversas opciones de configuración en la siguiente sección.

Antes de continuar, eliminemos el contenedor de prueba para que no nos encontremos con puertos en conflicto.

docker kill basic_registry

Configuración de registro

Hay dos formas en que podemos pasar la configuración al Registro de Docker. Una forma es pasar variables de entorno a un nuevo contenedor, y la otra es agregar un archivo de configuración.

Estas son algunas de las opciones de configuración comunes que usaremos:

  • loglevel- La cantidad mínima de información para iniciar sesión en la consola. Por defecto es info.
  • standalone- ¿Debería este registro actuar por sí solo? (Nunca consulta el registro público). El valor predeterminado es true.
  • index_endpoint- Si no es independiente, ¿qué otro índice consultaremos? Por defecto index.docker.io.
  • cachey cache_lru- Opciones relacionadas con el uso de un caché de Redis para archivos pequeños, tocaremos esto más adelante.
  • storage- ¿Qué backend de almacenamiento deberíamos usar para este servidor? (En este tutorial usaremos local).
  • storage_path - Si usa almacenamiento local, ¿qué directorio debemos usar para guardar los archivos?

Antes de comenzar a trabajar con la configuración, necesitamos un archivo base para trabajar. El archivo del repositorio de Docker Registry en GitHub funcionará bien:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

El archivo debe guardarse correctamente con una salida como:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

¡Excelente! Ahora podemos modificar este archivo para adaptarlo a nuestras necesidades.

El único editor de texto que viene con Core OS es vim, pero no se preocupe si nunca lo ha usado antes, esto explicará paso a paso qué editar y cómo hacerlo.

vim config_sample.yml

Una vez que tenga el archivo abierto, presione Iy la esquina inferior derecha debería aparecer: -- INSERT --para el modo de inserción. Desplácese hasta el final del archivo con las teclas de flecha, debería ver una sección etiquetada prod.

Vamos a cambiar las dos líneas, los cambios están debajo

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Lo que hemos hecho es cambiar la prodconfiguración para derivar de la localsección en lugar de la s3sección. Luego sobrescribimos el storage_pathpara usar la ruta /datadentro del nuevo contenedor.

Una vez que haya confirmado que todos los cambios son correctos, presione ESCpara salir del modo de inserción y escriba :wq(esto significa escribir los cambios en el archivo y salir de vim).

Ahora cambiemos el nombre del archivo a solo config.yml

mv config_sample.yml config.yml

Redis caché (opcional)

Si desea utilizar redis para acelerar su registro de contenedor, es tan simple como extraer un nuevo contenedor del registro público y agregar algunas líneas más de configuración.

Primero, extraiga la imagen de nivel superior de Redis:

docker pull redis

Una vez que la imagen se extrae con éxito, podemos ejecutarla y nombrarla tal como lo hicimos con el registro de prueba:

docker run -d --name registry-redis redis

Debido a que redis está en la memoria, no necesitamos realizar ninguna configuración, ya que lo vincularemos al contenedor del registro en pasos posteriores.

Una vez más, asegúrese de que se esté ejecutando usando docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Ahora vuelva a abrir la config.ymlen vime introduzca el modo de inserción al igual que la primera vez que editamos.

Agregue las siguientes líneas debajo de la prodsección, asegurándose de sangrar correctamente. Esta vez solo estamos agregando cachey cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

Las variables de entorno REDIS_PORT_6379_TCP_ADDRy REDIS_PORT_6379_TCP_PORTse pasan al contenedor de registro al vincularse con el contenedor de Redis.

Con eso, ahora ha configurado un contenedor Redis que funcionará de la mano con su contenedor de registro. ¡Ahora sobre la construcción del registro!

Construyendo el contenedor

Tenemos todo el conjunto de configuración y listo, ahora necesitamos construir el contenedor de registro real.

Pon en marcha vim Dockerfilepara crear un nuevo Dockerfile. Ingrese al modo de inserción y siga las modificaciones a continuación.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

Lo que hemos hecho anteriormente es esencialmente extender la imagen del registro para que use nuestro archivo de configuración y configuraciones. Un Dockerfile es un conjunto de instrucciones de compilación para que Docker las lea y compile. Si desea obtener más información sobre Dockerfiles y su sintaxis, consulte la documentación oficial del sitio de Docker.

Luego necesitamos construir el contenedor para su uso.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

¡Ahora estamos listos para correr!

Hagamos un directorio en nuestro sistema host para montar en el contenedor como el /datavolumen.

mkdir registry-data

Ahora podemos girar un nuevo contenedor. Si planea usar el caché de Redis, use el segundo comando a continuación.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

Para asegurarse de que su servidor esté funcionando correctamente, visite http://YOUR_IP:5000. Verá el siguiente mensaje:

"docker-registry server (prod) (v0.8.1)"

¡Observe el (prod)significado de nuestros cambios de configuración fueron exitosos!

Configure su cliente local de Docker

Ahora que tenemos nuestro propio registro en ejecución, queremos que el cliente Docker en nuestras máquinas locales comience a usarlo. Por lo general, usaría el comando: docker loginpero para nuestro uso, necesitamos agregar un argumento más al comando de inicio de sesión:

docker login YOUR_IP:5000

Ingrese un nombre de usuario y contraseña (piense en esto como hacer una nueva cuenta) e ignore el mensaje que indica que debe activarlo.

A continuación, extraigamos una imagen de archivo y la subamos a nuestro propio repositorio.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Si todo funciona correctamente, el mensaje final debe estar en la línea de:

Pushing tag for rev [a9eb17255234] on 

¡Felicidades! Has configurado tu propio repositorio de Docker.

¿Que sigue?

Aquí hay algunas ideas sobre cómo mejorar su nuevo registro privado:

  • Proxy inverso usando Nginx o Apache para colocar seguridad adicional frente a él, como una simple autenticación HTTP.
  • Obtenga un dominio para su servidor y configúrelo para que pueda acceder a su registro con algo como: Registry.mysite.com
  • Compre (o firme) un certificado SSL para agregar aún más protección si sus contenedores contienen información confidencial.


Leave a Comment

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.