Maison > Article > Opération et maintenance > Comment construire un entrepôt privé Docker
Dans Docker, lorsque nous exécutons la commande docker pull xxx, nous pouvons être curieux de savoir où Docker recherchera et qu'en est-il du téléchargement. l'image ?
Recommandations associées : Tutoriel Docker
Question réponse :
Cela vient en fait de l'adresse de recherche Registry.hub.docker.com, il s'agit de l'entrepôt public fourni par la société Docker. L'image ci-dessus est accessible à tous et peut être utilisée. Par conséquent, nous pouvons également apporter l'adresse de l'entrepôt pour extraire l'image, par exemple : docker pull Registry.hub.docker.com/library/alpine, mais sachez que le nom par défaut de l'image téléchargée de cette manière sera plus long.
Si nous voulons utiliser Docker dans l'entreprise, il nous est fondamentalement impossible de télécharger des projets commerciaux sur un entrepôt public. Alors, que pouvons-nous faire si nous voulons le partager avec plusieurs machines ?
En raison de ce besoin, les entrepôts privés entrent en jeu.
Le soi-disant entrepôt privé est quelque chose de similaire à un entrepôt public construit localement (LAN). Une fois construit, nous pouvons soumettre l'image à l'entrepôt privé. De cette façon, nous pouvons utiliser Docker pour exécuter les images de nos projets et éviter le risque d'exposition de projets commerciaux.
Ci-dessous, nous utilisons l'image du registre officiel pour créer un entrepôt d'images privé. Bien sûr, il existe de nombreuses autres méthodes.
Préparez deux serveurs avec docker installé : Machine serveur (le nom d'hôte est le registre) : serveur d'entrepôt privé Docker, conteneur de registre en cours d'exécution ; Machine de test (le nom d'hôte est le nœud) : serveur Docker ordinaire, téléchargez une image de test nginx sur ce serveur, puis téléchargez-la sur le serveur de registre pour le test
# docker pull registryUsing default tag: latest latest: Pulling from library/registry 81033e7c1d6a: Pull complete b235084c2315: Pull complete c692f3a6894b: Pull complete ba2177f3a70e: Pull complete a8d793620947: Pull complete Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54 Status: Downloaded newer image for registry:latest复制代码
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry latest f32a97de94e1 3 months ago 25.8 MB复制代码
# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
Description du paramètre
-itd : ouvrez un pseudo-terminal dans le conteneur pour les opérations interactives et exécutez-le en arrière-plan ;
-v : lie le répertoire /data/registry de l'hôte au répertoire /var/lib/registry du conteneur (ce répertoire est le répertoire dans lequel les fichiers image sont stockés dans le conteneur de registre) pour obtenir la persistance des données ;
-p : port de mappage ; accéder au port 5000 de l'hôte accédera au service du conteneur de registre ;
--restart=always : Il s'agit de la stratégie de redémarrage. Si le conteneur se ferme anormalement, le conteneur sera automatiquement redémarré ;
--name Registry : Créez un conteneur nommé Registry, vous pouvez le nommer comme vous le souhaitez ;
registre:dernière : C'est l'image qui vient d'être extraite
# curl http://127.0.0.1:5000/v2/_catalog
Maintenant, il est vide car il vient d'être exécuté et il ne contient aucun contenu d'image. {"repositories":[]}
# vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"] }# systemctl restart docker复制代码
# docker pull nginx# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
# docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码Description du format : Utilisation : docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Ceci est l'image source, qui est également le fichier image qui vient d'être extrait
nginx:lastest
Ceci est l'image cible, qui est également l'adresse IP et le port de ; le serveur d'images privé du registre ; registry服务器:5000/nginx:kurisu
Afficher l'effet
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] Get https://registry服务器:5000/v2/: http: server gave HTTP response to HTTPS client复制代码
Ceci est une erreur. Vous avez besoin de la méthode https pour. upload. Nous pouvons modifier daemon.json pour le résoudre :
[root@node ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "registry服务器:5000"] }复制代码
Ajoutez l'adresse du serveur miroir privé, notez que le format d'écriture est json, il y a des exigences d'écriture strictes, puis redémarrez le service docker :
Télécharger à nouveau : # systemctl restart docker
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] d7acf794921f: Pushed d9569ca04881: Pushed cf5b3c6798f7: Pushed kurisu: digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe size: 948复制代码
# docker rmi -f $(docker images -aq)Untagged: registry服务器:5000/nginx:kurisu Untagged: registry服务器:5000/nginx@sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Untagged: nginx:latest Untagged: nginx@sha256:bdbf36b7f1f77ffe7bd2a32e59235dff6ecf131e3b6b5b96061c652f30685f3a Deleted: sha256:719cd2e3ed04781b11ed372ec8d712fac66d5b60a6fb6190bf76b7d18cb50105 Deleted: sha256:e9b6506fb887de50972aefd99d7c5eb56b1a8e757ed953cdfecb86b5359bcb22 Deleted: sha256:55d9d9692a9615a28d183a42bc3881a72a39393feba3664e669e7affb78daa76 Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e复制代码
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE复制代码
Ensuite, téléchargez l'image nginx depuis le serveur de registre :
# docker pull registry服务器:5000/nginx:kurisukurisu: Pulling from nginxfc7181108d40: Pull complete c4277fc40ec2: Pull complete 780053e98559: Pull complete Digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Status: Downloaded newer image for registry服务器:5000/nginx:kurisu复制代码
Afficher l'image sur l'hôte du nœud :
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB复制代码
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!