Tutoriel détaillé sur la création d'un référentiel privé Docker

2020-01-11

1. Description du registre Docker
L'enregistrement personnel de l'ensemble du processus de configuration d'un registre Docker est documenté dans cet article. Bien que le responsable ait fourni Docker Hub en tant que référentiel centralisé ouvert, le réseau de Tianchao peut être imaginé. Il est connu que la première fois qu'un miroir est un échec ou une longue période, pour résoudre ce problème, nous devons créer un référentiel privé et tirer la poussée locale. La version docker que j'utilise est: 1.5.0

2. Installez le docker-registry


Copier le code < br> code est le suivant:
docker exécuter -d -e SETTINGS_FLAVOR = dev -e storage_path = / tmp / registre -v / alidata / registre: / tmp / registre -p 5000: 5000 registre

# Si le docker-registre n'a pas été téléchargé localement, le chemin d'accès et le port seront mappés lors de la première exécution du registre d'extraction, et le référentiel privé pourra être trouvé dans / data / registry à l'avenir

3, fonctionnant sur le client
# le dépôt local à partir duquel l'image acquiert


copie le code code
est la suivante:
boucle -X GET http://registry.wpython.com:5000/v1/search

curl http://registry.wpython.com:5000/v1/search
{"num_results": 1, "requête": "", "résultats": [{"description": "", "nom": "bibliothèque / centos6"}]}

# tiré à l'échelle locale


< u> copie le code code
est la suivante:
docker bibliothèque de traction / centos6

# tag miroir


copier le code code
est la suivante:
docker tag 8552ea9a16f9 registry.wpython.com:5000/centos6_x86_64.mini

# de nouvelles images docker pousser à un entrepôt local


copie le code code
est la suivante:
docker pousser registry.wpython.com:5000/centos6_x86_64.mini

4. Rejoignez l'authentification nginx
Une fois que Docker a commencé à écouter le port, il utilise http pour gérer à distance l'hôte Docker.
Ce scénario présente des inconvénients. La couche API ne fournit pas de fonctions d'authentification telles que l'authentification utilisateur et le jeton. Tout le monde peut contrôler l'hôte Docker via l'adresse et le port. Pour éviter cette situation, Docker prend officiellement en charge https. Méthode, mais nous devons générer le certificat nous-mêmes.
La nouvelle version de docker est également obligatoire pour utiliser https, sinon elle signalera une erreur

# Installez légèrement nginx
Créez un utilisateur de connexion (s'il n'y a pas de commande htpasswd, veuillez installer le package httpd-tools)



Copier le code < / span> Code
est la suivante:
htpasswd -c /alidata/server/nginx/docker-registry.htpasswd admin
nouveau mot de passe:
Retaper nouveau mot de passe:
Ajout d'un mot de passe pour l'administrateur utilisateur

# clé racine génération


< u> copie le code code
est la suivante:
cd / etc / pki / CA /
OpenSSL genrsa départ privé / cakey.pem 2048
< / p>

# racine génération de certificat


copier le code code
est la suivante:
openssl req -new -x509 privé -key / cakey.pem cacert.pem
départ
Nom Pays (Code à 2 lettres) [AU]: CN
Nom de l'État ou de la province (nom complet) [Quelque État]: Brijing
Nom de la localité (par exemple, ville) []: Chaoyang
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd]:
Nom de l'unité organisationnelle (par exemple, section) []:
Nom commun (par exemple nom de domaine complet du serveur ou VOTRE nom) []: registry.wpython.com
Adresse e-mail []:

# Servir nginxgénération de clé ssl


copier le code Code
est la suivante:
cd / alidata / server / nginx / ssl
openssl genrsa -out nginx.key 2048

# nginx génération de certificat demande

signé
copier le code code
est comme suit:
openssl req -new -key nginx.key nginx.csr
départ
Vous êtes sur le point d'être invité à entrer des informations qui seront incorporées
dans votre demande de certificat.
Ce que vous êtes sur le point de saisir est ce qu'on appelle un nom distinctif ou un DN.
Il y en a plusieurs champs mais vous pouvez en laisser un vide
Pour certains champs, il y aura une valeur par défaut,
Si vous entrez ".", le champ sera laissé vide.
-----
Nom du pays (code à 2 lettres) [AU]: CN
Nom de l'État ou de la province (nom complet) [Certains États]: Pékin
Nom de la localité (par exemple, ville) []: Chaoyang
Nom de l'organisation (par exemple, société) [Internet Widgits Pty Ltd]:
Nom de l'unité organisationnelle (par exemple, section) []:
Nom commun (par exemple nom de domaine complet du serveur ou VOTRE nom) []: registre. wpython.com
Adresse e-mail []:

Veuillez entrer le follo Attributs "supplémentaires" de l'aile
à envoyer avec votre demande de certificat
Un mot de passe de défi []:
Un nom de société facultatif []:

# CA privé à délivrer le certificat sur demande


copier le code code
est comme suit:
OpenSSL ca -in nginx.csr nginx.crt
départ


# Si l'erreur suivante est signalée:
Utilisation de la configuration à partir de /usr/local/ssl/openssl.cnf
/etc/pki/CA/index.txt: aucun fichier ou répertoire
impossible d'ouvrir '/etc/pki/CA/index.txt'
140137408210600: erreur: 02001002: bibliothèque système: fopen: aucun fichier ou répertoire de ce type: bss_file.c: 398: fopen ('/ etc / pki /CA/index.txt','r ')
140137408210600: erreur: 20074002: routines BIO: FILE_CTRL: lib système: bss_file.c: 400:

# exécutez la commande suivante

copie le code
code est le suivant:
cd / etc / pki / CA /

mkdir newcerts toucher index.txt

toucher série echo 01> série
cd-

openssl ca -in nginx.csr -out nginx.crt


U configuration de sing à partir de /usr/local/ssl/openssl.cnf
Vérifiez que la demande correspond à la signature
Signature ok
Détails du certificat:
Numéro de série: 1 (0x1)
Validité
Pas avant: 12 mai 04:15:08 2015 GMT
Pas après: 11 mai 04:15:08 2016 GMT
Objet:
countryName = CN
stateOrProvinceName = Beijing
organizationName = Internet Widgits Pty Ltd
commonName = registry.wpython.com
emailAddress = 739827282@qq.com
Extensions X509v3:
X509v3 Basic Contraintes:
CA: FAUX
Commentaire Netscape:
Certificat généré par OpenSSL
X509v3 Identifiant de la clé du sujet:
B5: 20: C7: 47: 26: D9: 26: 54: 12: F7: 36: 7E: 4E: 3A: F0: D9: 0E: 2C: F7: BD
X509v3 Identifiant de clé d'autorité ier:
keyid: 93: F7: 86: 72: 1B: 2B: 24: CD: AF: 24: EF: 53: F4: E1: FA: EC: E7: 70: 1A: 90

Le certificat doit être certifié jusqu'au 11 mai 04:15:08 2016 GMT (365 jours)
Signer le certificat? [o / n]: o


1 demande de certificat sur 1 certifiée, validation? [O / n] y
Écriture de la base de données avec 1 nouvelles entrées
Base de données mise à jour

# Certificat racine trouvé


Copier le code < br> code est le suivant:
# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak} sauvegarde en cas de
d'erreur # cat / etc / pki / CA / cacert .pem >> /etc/pki/tls/certs/ca-bundle.crt

# créer le fichier de configuration nginx


< u> copier le code code
est comme suit:
# vi /alidata/server/nginx/conf/vhosts/www.wpython.com.conf
en amont docker -registry {

serveur localhost: 5000;
}

serveur {
listen 8080;
nom_serveur Registry.wpython.com;

# ssl activé
ssl activé;
ssl_certificate_key / alidata / server / nginx / ssl / nginx .key;

proxy_set_header Host $ http_host;
proxy_set_header X-Real-IP $ remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;

location / {

auth_basic "Restreint";
auth_basic_user_file docker-registry.htpasswd;
proxy_pass http: // docker-registry;

}

locatio n / _ping {

auth_basic off;
proxy_pass http: // docker-registry;

}

emplacement / v1 / _ping {
auth_basic off;
proxy_pass http: // docker-registry;
}
}

# Terminez le test



Copier le code < / span> Code
est la suivante:
# docker connexion https://registry.wpython.com:8080
Nom d'utilisateur: admin
Mot de passe:
Email: 739827282 @ qq.com
Connexion réussie

Ranch


Certificat généré par OpenSSL
X509v3 Identifiant de la clé du sujet:
B5: 20: C7: 47: 26: D9: 26: 54: 12: F7: 36: 7E: 4E: 3A: F0: D9: 0E: 2C: F7: BD
X509v3 Identifiant de clé d'autorité:
keyid: 93: F7: 86: 72: 1B: 2B: 24: CD: AF: 24: EF: 53: F4: E1: FA: EC: E7: 70: 1A: 90

Le certificat doit être certifié jusqu'au 11 mai 04:15:08 2016 GMT (365 jours)
Signer le certificat? [o / n]: o


1 demande de certificat sur 1 certifiée, validation? [o / n] o
Écriture de la base de données avec 1 nouvelles entrées
Base de données mise à jour

# Certificat racine trouvé


Copier le code < br> code est le suivant:
# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak} sauvegarde en cas de
d'erreur # cat / etc / pki / CA / cacert .pem >> /etc/pki/tls/certs/ca-bundle.crt

# créer le fichier de configuration nginx


< u> copier le code code
est comme suit:
# vi /alidata/server/nginx/conf/vhosts/www.wpython.com.conf
en amont docker -registry {

serveur localhost: 5000;
}

serveur {
listen 8080;
nom_serveur Registry.wpython.com;

# ssl activé
ssl activé;
ssl_certificate_key / alidata / server / nginx / ssl / nginx .key;

proxy_set_header Host $ http_host;
proxy_set_header X-Real-IP $ remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;

location / {

auth_basic "Restreint";
auth_basic_user_file docker-registry.htpasswd;
proxy_pass http: // docker-registry;

}

locatio n / _ping {

auth_basic off;
proxy_pass http: // docker-registry;

}

emplacement / v1 / _ping {
auth_basic off;
proxy_pass http: // docker-registry;
}
}

# Terminez le test



Copier le code < / span> Code
est la suivante:
# docker connexion https://registry.wpython.com:8080
Nom d'utilisateur: admin
Mot de passe:
Email: 739827282 @ qq.com
Connexion réussie

Ranch


www.xd1998.com@2001-2030Partage De Technologie