Mars-09-2020 EDIT :
(docker version 18.09.9-ce build 039a7df, dockercompose version 1.24.0, build 0aa59064)
J'ai découvert que pour créer un conteneur docker, il suffit de docker-compose 'up -d' après avoir marqué le conteneur avec une fausse étiquette de serveur de registre local (localhost:5000/{image}).
$ docker tag {imagename}:{imagetag} localhost:5000/{imagename}:{imagetag}
Vous n'avez pas besoin d'exécuter le serveur de registre local, mais vous devez changer l'url de l'image dans le fichier yaml de dockercompose avec l'url du faux serveur de registre local :
version: '3'
services:
web-server:
image: localhost:5000/{your-image-name} #change from {imagename}:{imagetag} to localhost:5000/{imagename}:{imagetag}
ports:
- "80:80"
de {imagename}:{imagetag} à localhost:5000/{imagename}:{imagetag}
et juste en haut -d
$ docker-compose -f {yamlfile}.yaml up -d
Cela crée le conteneur si vous avez déjà l'image (localhost:5000/{imagename}) dans votre machine locale.
Complétant la réponse de @Tom Saleeba,
J'ai toujours des erreurs après avoir marqué le conteneur avec "/". (par ex : victor-dombrovsky/docker-image:latest
) Il continue à chercher l'image du serveur distant docker.io.
registry_address/docker-image
Il semble que l'url avant "/" soit l'adresse du registre et après "/" le nom de l'image. Sans "/", docker-compose recherche par défaut l'image sur le site distant docker.io.
Je suppose que c'est un bug connu avec docker-compose
J'ai finalement réussi à le faire fonctionner en exécuter le registre local , en poussant l'image vers le registre local avec la balise du registre, et en retirant l'image du registre local.
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
$ docker tag your-image-name:latest localhost:5000/your-image-name
$ docker push localhost:5000/your-image-name
et ensuite changer l'url de l'image dans le dockerfile :
version: '3'
services:
chat-server:
image: chat-server:staging
ports:
- "8110:8110"
web-server:
image: localhost:5000/{your-image-name} #####change here
ports:
- "80:80"
- "443:443"
- "8009:8009"
- "8443:8443"
De même pour l'image du serveur de chat.
3 votes
Pouvez-vous vérifier que l'image du serveur web a été construite localement ? Veuillez inclure l'image du serveur web.
docker-compose.yml
fichier0 votes
Peut-être que l'une d'entre elles fonctionnera : redémarrer le service Docker, recréer l'image du serveur Web avec Docker Build, puis essayer d'exécuter Docker Compose.
0 votes
@DenisTsoi J'ai ajouté mon fichier docker-compose. Comment dois-je vérifier que l'image a été construite localement ? J'ai fourni la sortie de
docker images
qui liste mon image. Je suppose que cela vérifie que l'image a bien été construite ici.0 votes
Je suppose que vous n'avez pas poussé
web-server
ochat-server
adocker-hub
alors vous devrez peut-être le référencer en tant que chemin relatif.0 votes
@DenisTsoi L'image a été construite en utilisant
docker build -t chat-server:staging .
commandement.0 votes
@DenisTsoi Oui, je ne l'ai pas poussé vers Docker Hub. Mais le fait est que je ne veux pas le faire. Puis-je éviter de télécharger des images sur Docker Hub et utiliser mes images existantes localement ?
1 votes
Oui - vous pouvez. Si vous utilisez docker-compose, vous pouvez utiliser des chemins relatifs. supprimez le fichier existant
docker containers
-docker rm -f chat-server:staging
,docker rm -f web-server:staging
. - utilisez la réponse ci-dessous pour ajouter un chemin relatif.1 votes
Utiliser également
docker-compose images
docker-compose ps
pour voir si vos images/conteneurs sont à l'intérieur dedocker-compose
0 votes
Laissez-nous continuer cette discussion dans le chat .
1 votes
Que diriez-vous d'essayer avec l'identification partielle
image: b94573990687
0 votes
Il semble que la balise d'image de docker préfère qu'elle commence par un nombre et non par une chaîne. D'après notre expérience, au lieu de web-server:staging, essayez web-server:1-staging ou web-server:{number}.staging