Sur CoreOS, configurez votre propre registre Docker

Nous connaissons et aimons tous Docker, une plateforme pour créer, gérer et distribuer des conteneurs d'applications sur plusieurs machines. Docker Inc. fournit un service pour héberger des conteneurs open source à télécharger (ou à extraire) comme un référentiel git connu sous le nom de «Docker Registry». Considérez-le comme un GitHub pour les conteneurs Docker.

Mais que faire si vous souhaitez héberger votre propre registre séparé du registre public? Eh bien, Docker Inc. a ouvert son application de registre sur GitHub.

Ce didacticiel vous guidera dans le processus de configuration d'un registre Docker privé à l'aide de CoreOS sur un nouveau VPS.

CoreOS + Docker

Nous ne passerons pas une tonne de temps à examiner exactement ce que Docker et CoreOS peuvent faire, car cela sort du cadre de ce didacticiel. Essentiellement, CoreOS est conçu pour les clusters de serveurs massifs, il est petit, rapide et reçoit automatiquement des mises à jour de sécurité régulières. Son système de fichiers racine est également en lecture seule, ce qui signifie que vous devez utiliser Docker pour exécuter tout type de logiciel qui n'est pas inclus avec l'installation de base.

Cela fait de Core OS un système hôte parfait pour Docker!

Extraire et exécuter le dernier registre

Docker Inc. a fourni le registre comme une image de niveau supérieur, cela signifie que nous pouvons le retirer avec un simple:

docker pull registry

Cela peut prendre quelques minutes en fonction de la vitesse de connexion.

Un avantage d'être une image de haut niveau signifie également qu'elle bénéficie d'un support et de mises à jour régulières.

Maintenant, testons le registre. Nous pouvons créer un nouveau conteneur en utilisant l'image de registre:

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

Pour ceux qui n'ont pas trop utilisé Docker, le -pdrapeau signifie PORT, ce qui signifie que nous exposons le port 5000 du conteneur au port hôte 5000.

Le -ddrapeau signifie daemon, cela entraînera le conteneur à s'exécuter en arrière-plan et n'imprimera pas la sortie à la session SSH actuelle, nous voulons également nommer ce conteneur de test de base en utilisant l' --nameoption afin que nous puissions facilement le gérer plus tard.

Assurez-vous que votre conteneur de registre de base fonctionne en utilisant docker ps. La sortie doit ressembler à:

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

Visitez également http://YOUR_IP:5000votre navigateur Web et vous devriez recevoir un message comme celui-ci:

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

Remarquez le mot deventre parenthèses. Cela signifie que le serveur exécute actuellement la configuration dev. Nous examinerons bientôt plus de configuration.

Vous avez maintenant votre propre registre de conteneurs (très basique) en cours d'exécution! Mais nous n'avons pas encore fini.

Peut-être que vous voulez garder cela privé des regards indiscrets, ou peut-être stocker vos images sur Amazon S3 au lieu du stockage local. Passons en revue les différentes options de configuration dans la section suivante.

Avant de continuer, tuons le conteneur de test afin de ne pas rencontrer de ports en conflit.

docker kill basic_registry

Configuration du registre

Il existe deux façons de passer la configuration au Docker Registry. Une façon consiste à transmettre des variables d'environnement à un nouveau conteneur, et l'autre consiste à ajouter un fichier de configuration.

Voici quelques-unes des options de configuration courantes que nous utiliserons:

  • loglevel- La quantité minimale d'informations pour se connecter à la console. La valeur par défaut est info.
  • standalone- Ce registre doit-il agir seul? (N'interroge jamais le registre public.) La valeur par défaut est true.
  • index_endpoint- S'il n'est pas autonome, quel autre index allons-nous interroger? Par défaut index.docker.io.
  • cacheet cache_lru- Options relatives à l'utilisation d'un cache Redis pour les petits fichiers, nous y reviendrons plus tard.
  • storage- Quel backend de stockage devrions-nous utiliser pour ce serveur? (Dans ce tutoriel, nous utiliserons local).
  • storage_path - Si vous utilisez le stockage local, dans quel répertoire devrions-nous utiliser pour conserver les fichiers?

Avant de travailler avec la configuration, nous avons besoin d'un fichier de base avec lequel travailler. Le fichier du référentiel Docker Registry sur GitHub fonctionnera très bien:

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

Le fichier doit être enregistré avec succès avec une sortie telle que:

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

Génial! Nous pouvons maintenant modifier ce fichier pour l'adapter à nos besoins.

Le seul éditeur de texte fourni avec Core OS est vim, mais ne vous inquiétez pas si vous ne l'avez jamais utilisé auparavant, cela vous expliquera étape par étape ce qu'il faut modifier et comment le faire.

vim config_sample.yml

Une fois le fichier ouvert, appuyez sur Iet le coin inférieur droit devrait s'afficher: -- INSERT --pour le mode insertion. Faites défiler jusqu'au bas du fichier en utilisant vos touches fléchées, vous devriez voir une section intitulée prod.

Nous allons changer les deux lignes, les changements sont ci-dessous

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

Ce que nous avons fait, c'est changer la prodconfiguration pour dériver de la localsection au lieu de la s3section. Ensuite, nous avons remplacé le storage_pathpour utiliser le chemin /dataà l'intérieur du nouveau conteneur.

Une fois que vous avez confirmé que toutes les modifications sont correctes, appuyez sur ESCpour quitter le mode d'insertion et tapez :wq(cela signifie écrire les modifications dans le fichier et quitter vim.)

Renommons maintenant le fichier juste config.yml

mv config_sample.yml config.yml

Redis cache (facultatif)

Si vous souhaitez utiliser redis pour accélérer votre registre de conteneurs, c'est aussi simple que d'extraire un nouveau conteneur du registre public et d'ajouter quelques lignes de configuration supplémentaires.

Tout d'abord, tirez l'image de niveau supérieur de Redis:

docker pull redis

Une fois l'image tirée avec succès, nous pouvons l'exécuter et la nommer comme nous l'avons fait avec le registre de test:

docker run -d --name registry-redis redis

Parce que redis est en mémoire, nous n'avons pas besoin de faire de configuration pour cela, car nous le lierons au conteneur de registre dans les étapes ultérieures.

Encore une fois, assurez-vous qu'il fonctionne en utilisant 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

Maintenant réouvrir le config.ymldans vimet entrer en mode insertion comme la première fois que nous édité.

Ajoutez les lignes suivantes sous la prodsection, en veillant à bien mettre en retrait. Cette fois, nous ajoutons seulement cacheet 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

Les variables d'environnement REDIS_PORT_6379_TCP_ADDRet REDIS_PORT_6379_TCP_PORTsont transmises au conteneur de registre lors de la liaison avec le conteneur Redis.

Avec cela, vous avez maintenant configuré un conteneur Redis qui fonctionnera de pair avec votre conteneur de registre. Passons maintenant à la création du registre!

Construire le conteneur

Nous avons tout le jeu de configuration et prêt, nous devons maintenant construire le conteneur de registre réel.

vim DockerfileLancez- vous pour créer un nouveau Dockerfile. Passez en mode insertion et suivez les modifications ci-dessous.

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

Ce que nous avons fait ci-dessus est essentiellement d'étendre l'image de registre afin qu'il utilise notre fichier de configuration et nos paramètres. Un Dockerfile est un ensemble d'instructions de construction que Docker peut lire et construire. Si vous souhaitez en savoir plus sur les Dockerfiles et leur syntaxe, consultez la documentation officielle du site Docker.

Ensuite, nous devons construire le conteneur pour l'utiliser.

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

Maintenant, nous sommes prêts à courir!

Faisons un répertoire sur notre système hôte à monter dans le conteneur comme /datavolume.

mkdir registry-data

Nous pouvons maintenant faire tourner un nouveau conteneur. Si vous prévoyez d'utiliser le cache Redis, utilisez la 2e commande ci-dessous.

# 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

Pour vous assurer que votre serveur fonctionne correctement, visitez http://YOUR_IP:5000. Vous verrez le message suivant:

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

Remarquez la (prod)signification de nos modifications de configuration!

Configurez votre client Docker local

Maintenant que nous avons notre propre registre en cours d'exécution, nous voulons que le client Docker sur nos machines locales commence à l'utiliser. Habituellement, vous utiliseriez la commande:, docker loginmais pour notre usage, nous devons ajouter un argument de plus à la commande de connexion:

docker login YOUR_IP:5000

Entrez un nom d'utilisateur et un mot de passe (pensez à cela comme créer un nouveau compte) et ignorez le message qui indique que vous devez l'activer.

Ensuite, tirons une image stock et la poussons vers notre propre référentiel.

# 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 tout se passe correctement, le message final devrait être le suivant:

Pushing tag for rev [a9eb17255234] on 

Toutes nos félicitations! Vous avez configuré votre propre référentiel Docker.

Et après?

Voici quelques idées sur la façon d'améliorer votre nouveau registre privé:

  • Proxy inverse utilisant Nginx ou Apache pour placer une sécurité supplémentaire devant lui, comme une simple authentification HTTP.
  • Obtenez un domaine pour votre serveur et configurez-le afin que vous puissiez accéder à votre registre avec quelque chose comme: registry.mysite.com
  • Achetez (ou auto-signez) un certificat SSL pour ajouter encore plus de protection si vos conteneurs contiennent des informations sensibles.


Leave a Comment

Installer Docker sur Ubuntu 14.04

Installer Docker sur Ubuntu 14.04

Vous utilisez un système différent? Docker est une application qui permet de déployer des programmes exécutés en tant que conteneurs. Il a été écrit dans le populaire programme Go

Configuration de Sentry via Docker sur Ubuntu 16.04

Configuration de Sentry via Docker sur Ubuntu 16.04

Vous utilisez un système différent? Introduction Sentry est une solution open source pour le suivi des erreurs. Sentry suit les exceptions et autres messages utiles

Déployer une application PHP à laide de Docker-compose

Déployer une application PHP à laide de Docker-compose

Les applications PHP sont généralement composées dun serveur Web, dun système de base de données relationnelle et de linterpréteur de langage lui-même. Dans ce tutoriel, nous serons leveragin

Installer Rancher Server sur RancherOS

Installer Rancher Server sur RancherOS

Présentation RancherOS est un système dexploitation incroyablement léger (seulement environ 60 Mo) qui exécute un démon Docker système en tant que PID 0 pour exécuter les services système

Session collante avec Docker Swarm (CE) sur Debian 9

Session collante avec Docker Swarm (CE) sur Debian 9

Vous utilisez un système différent? Introduction Docker Swarm transforme vos serveurs individuels en un cluster dordinateurs; faciliter la mise à léchelle, la haute disponibilité et

Comment utiliser Docker: création de votre premier conteneur Docker

Comment utiliser Docker: création de votre premier conteneur Docker

Ce didacticiel explique les bases de la prise en main de Docker. Je suppose que Docker est déjà installé. Les étapes de ce didacticiel fonctionnent sur un

Équilibrage de charge avec Docker

Équilibrage de charge avec Docker

Lorsque vous exécutez une application Web, vous souhaitez normalement tirer le meilleur parti de vos ressources sans avoir à convertir votre logiciel pour utiliser le multithreading o

Déployer une application Node.js à laide de Docker

Déployer une application Node.js à laide de Docker

Cet article vous montrera comment déployer votre application Node dans un conteneur Docker. Remarque: ce didacticiel suppose que Docker est installé et lu

Installer Rancher OS via iPXE

Installer Rancher OS via iPXE

Rancher OS est une distribution Linux très légère construite autour de Docker. LOS lui-même pèse environ 20 Mo. Ce tutoriel vous permettra de devenir opérationnel avec

Déployer Kubernetes avec Kubeadm sur CentOS 7

Déployer Kubernetes avec Kubeadm sur CentOS 7

Présentation Cet article est destiné à vous aider à obtenir un cluster Kubernetes opérationnel avec kubeadm en un rien de temps. Ce guide déploiera deux serveurs, sur

Installation de docker-compose sur CoreOS

Installation de docker-compose sur CoreOS

Cet article explique comment installer docker-compose sur CoreOS. Dans CoreOS, le dossier / usr / est immuable, donc le chemin standard / usr / local / bin nest pas disponible pour

Comment installer Harbor sur CentOS 7

Comment installer Harbor sur CentOS 7

Harbor est un serveur de registre de classe entreprise open source qui stocke et distribue des images Docker. Harbor étend la distribution open source Docker b

Installer Docker CE sur Ubuntu 18.04

Installer Docker CE sur Ubuntu 18.04

Introduction Docker est une application qui nous permet de déployer des programmes exécutés en tant que conteneurs. Il a été écrit dans le langage de programmation Go populaire

Créer un essaim Docker sur Alpine Linux 3.9.0

Créer un essaim Docker sur Alpine Linux 3.9.0

Introduction Ce guide vous montrera comment créer et configurer un essaim Docker à laide de plusieurs serveurs Alpine Linux 3.9.0 et Portainer. Veuillez noter que

Premiers pas avec SQL Server 2017 (MS-SQL) sur CentOS 7 avec Docker

Premiers pas avec SQL Server 2017 (MS-SQL) sur CentOS 7 avec Docker

Prérequis Docker engine 1.8+. Minimum de 4 Go despace disque. Minimum de 4 Go de RAM. Étape 1. Installer Docker Pour installer SQL-Server, Docker mus

Premiers pas avec Kubernetes sur CentOS 7

Premiers pas avec Kubernetes sur CentOS 7

Kubernetes est une plate-forme open source développée par Google pour gérer les applications conteneurisées sur un cluster de serveurs. Il s’appuie sur une décennie et

Installer Rancher sur Ubuntu 16.04

Installer Rancher sur Ubuntu 16.04

Vous utilisez un système différent? Introduction Rancher est une plate-forme open source pour exécuter des conteneurs et créer un service de conteneurs privé. Léleveur est la base

Installation de Docker CE sur CentOS 7

Installation de Docker CE sur CentOS 7

La technologie de conteneur Docker vous permet dexécuter des applications dans un environnement spécifique et isolé. Docker Community Edition (CE) est le nouveau nom du fre

Installer Docker CE sur Debian 9

Installer Docker CE sur Debian 9

Vous utilisez un système différent? Introduction Docker est une application qui permet le déploiement de logiciels dans des conteneurs virtuels. Il a été écrit dans le G

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.