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

Instalación de Docker en Ubuntu 14.04

Instalación de Docker en Ubuntu 14.04

¿Usando un sistema diferente? Docker es una aplicación que permite implementar programas que se ejecutan como contenedores. Fue escrito en el popular programa Go

Setup Sentry via Docker on Ubuntu 16.04

Setup Sentry via Docker on Ubuntu 16.04

Using a Different System? Introduction Sentry is an open source solution for error tracking. Sentry tracks exceptions and other useful messages fro

Instalar el servidor Rancher en RancherOS

Instalar el servidor Rancher en RancherOS

Descripción general RancherOS es un sistema operativo increíblemente liviano (solo unos 60 MB) que ejecuta un demonio Docker del sistema como PID 0 para ejecutar servicios del sistema

Cómo usar Docker: Creando tu primer contenedor Docker

Cómo usar Docker: Creando tu primer contenedor Docker

Este tutorial explica los conceptos básicos para comenzar a usar Docker. Supongo que ya tienes instalado Docker. Los pasos de este tutorial funcionarán en un

Balance de carga con Docker

Balance de carga con Docker

Al ejecutar una aplicación web, normalmente desea aprovechar al máximo sus recursos sin tener que convertir su software para usar subprocesos múltiples o

Create a Docker Swarm on Alpine Linux 3.9.0

Create a Docker Swarm on Alpine Linux 3.9.0

Introduction This guide will show you how to create and configure a Docker swarm using multiple Alpine Linux 3.9.0 servers and Portainer. Please be aware tha

Implemente una aplicación Node.js con Docker

Implemente una aplicación Node.js con Docker

Este artículo le mostrará cómo implementar su aplicación Node dentro de un contenedor Docker. Nota: Este tutorial asume que tienes Docker instalado y leído

Instalar Rancher OS a través de iPXE

Instalar Rancher OS a través de iPXE

Rancher OS es una distribución de Linux muy ligera construida alrededor de Docker. El sistema operativo en sí pesa alrededor de 20 MB. Este tutorial lo pondrá en funcionamiento con

Deploy Kubernetes With Kubeadm on CentOS 7

Deploy Kubernetes With Kubeadm on CentOS 7

Overview This article is meant to help you get a Kubernetes cluster up and running with kubeadm in no time. This guide will be deploying two servers, on

Instalación de docker-compose en CoreOS

Instalación de docker-compose en CoreOS

Este artículo explica cómo instalar docker-compose en CoreOS. En CoreOS, la carpeta / usr / es inmutable, por lo que la ruta estándar / usr / local / bin no está disponible para

Cómo instalar Harbor en CentOS 7

Cómo instalar Harbor en CentOS 7

Harbor es un servidor de registro de clase empresarial de código abierto que almacena y distribuye imágenes de Docker. Harbor extiende el código abierto Docker Distribution b

Install Docker CE on Ubuntu 18.04

Install Docker CE on Ubuntu 18.04

Introduction Docker is an application that allows us to deploy programs that are run as containers. It was written in the popular Go programming language

Comience con SQL Server 2017 (MS-SQL) en CentOS 7 con Docker

Comience con SQL Server 2017 (MS-SQL) en CentOS 7 con Docker

Requisitos previos Docker engine 1.8+. Mínimo de 4 GB de espacio en disco. Mínimo de 4 GB de RAM. Paso 1. Instalar Docker Para instalar SQL-Server, Docker mus

Comenzando con Kubernetes en CentOS 7

Comenzando con Kubernetes en CentOS 7

Kubernetes es una plataforma de código abierto desarrollada por Google para administrar aplicaciones en contenedores en un grupo de servidores. Se basa en una década y

Implemente una aplicación PHP usando Docker-compose

Implemente una aplicación PHP usando Docker-compose

Las aplicaciones PHP generalmente están compuestas por un servidor web, un sistema de base de datos relacional y el propio intérprete de idiomas. En este tutorial estaremos apalancando

Instalar Rancher en Ubuntu 16.04

Instalar Rancher en Ubuntu 16.04

¿Usando un sistema diferente? Introducción Rancher es una plataforma de código abierto para ejecutar contenedores y crear un servicio de contenedor privado. Ranchero es base

Sticky Session With Docker Swarm (CE) on Debian 9

Sticky Session With Docker Swarm (CE) on Debian 9

Using a Different System? Introduction Docker Swarm turns your individual servers into a cluster of computers; facilitating scaling, high-availability an

Instalación de Docker CE en CentOS 7

Instalación de Docker CE en CentOS 7

La tecnología de contenedores Docker le permite ejecutar aplicaciones en un entorno específico y aislado. Docker Community Edition (CE) es el nuevo nombre para el fre

Instalación de Docker CE en Debian 9

Instalación de Docker CE en Debian 9

¿Usando un sistema diferente? Introducción Docker es una aplicación que permite la implementación de software en contenedores virtuales. Fue escrito en el G

¿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.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.