La commande suivante échoue, en essayant d'extraire une image du Docker Hub:
$ docker-compose up -d
Pulling web-server (web-server:staging)...
ERROR: repository web-server not found: does not exist or no pull access
Mais je veux juste utiliser une version locale de l'image, qui existe:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web-server staging b94573990687 7 hours ago 365MB
Pourquoi Docker ne recherche pas parmi les images stockées localement?
Ceci est mon fichier Docker Compose:
version: '3'
services:
chat-server:
image: chat-server:staging
ports:
- "8110:8110"
web-server:
image: web-server:staging
ports:
- "80:80"
- "443:443"
- "8009:8009"
- "8443:8443"
et mon fichier .env:
DOCKER_Host=tcp://***.***.**.**:2376
DOCKER_TLS_VERIFY=true
DOCKER_CERT_PATH=/Users/Victor/Documents/Development/projects/.../target/docker
En général, cela devrait fonctionner comme vous le décrivez. J'ai essayé de le reproduire, mais cela a tout simplement fonctionné ...
Structure du dossier:
.
├── docker-compose.yml
└── Dockerfile
Contenu de Dockerfile:
FROM Alpine
CMD ["echo", "i am groot"]
Construire et taguer l'image:
docker build -t groot .
docker tag groot:latest groot:staging
avec docker-compose.yml:
version: '3.1'
services:
groot:
image: groot:staging
et lancez docker-compose:
$ docker-compose up
Creating groot_groot ...
Creating groot_groot_1 ... done
Attaching to groot_groot_1
groot_1 | i am groot
groot_groot_1 exited with code 0
Dans votre fichier docker-compose.yml, vous pouvez spécifier build: .
au lieu de build: <username>/repo>
pour les versions locales (plutôt que d'extraire de docker-hub). Je ne peux pas le vérifier pour le moment, mais je vous crois peut pouvoir créer des chemins relatifs pour plusieurs services vers le fichier docker-compose.
services:
app:
build: .
Référence: https://github.com/gvilarino/docker-workshop
Il se peut que vous deviez modifier votre balise d'image pour que deux parties soient séparées par une barre oblique /
. Donc au lieu de
chat-server:staging
faire quelque chose comme:
victor-dombrovsky/chat-server:staging
Je pense qu'il y a une certaine logique derrière les tags Docker et les tags "une partie" sont interprétés comme des images officielles provenant de DockerHub.
Ajoutant à la réponse de @Tom Saleeba,
Il me restait encore des erreurs après avoir marqué le conteneur avec "/" (par exemple: victor-dombrovsky/docker-image:latest
) Il continuait à chercher l'image depuis le serveur distant docker.io.
registry_address/docker-image
Il semble que l'URL avant "/" soit l'adresse de registre et après "/" le nom de l'image. et sans "/" fourni, docker-compose recherche par défaut l'image à partir du fichier docker.io distant.
Il semble que ce soit un bug conn avec docker-compose
J'ai finalement réussi à le faire fonctionner par en exécutant le registre local , en le poussant vers le registre local avec la balise de registre et en extrayant 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
puis changez l'URL de l'image dans le fichier docker:
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 discussion.