web-dev-qa-db-fra.com

Comment utiliser une image locale comme image de base avec un fichier de docker?

Je travaille sur un fichier de dock… .. Je viens de me rendre compte que j'ai utilisé FROM avec des images indexées depuis le début.

Alors je me demande:

  • Comment utiliser l'une de mes images locales (personnalisées) comme image de base (FROM) sans pushing dans l'index?
80
Phil

Vous pouvez l'utiliser sans rien faire de spécial. Si vous avez une image locale appelée blah, vous pouvez faire FROM blah. Si vous avez FROM blah dans votre fichier Docker, mais que n'a pas une image locale appelée blah, alors Docker essaiera de l'extraire du registre.

En d'autres termes, si un fichier Dockerfile utilise FROM ubuntu, mais que vous avez une image locale appelée ubuntu différente de celle officielle, votre image la remplacera.

98
jpetazzo

Vérifié: cela fonctionne bien dans Docker 1.7.0. 

En passant, ne spécifiez pas --pull=true lors de l'exécution de la commande docker build:

si vous voulez utiliser l'image locale comme image de base, veuillez ne pas utiliser le L'option --pull=true, --pull=true tentera toujours d'extraire un plus récent version de l'image.

- https://github.com/docker/docker/issues/14943

13
Dmitriusan

Vous pouvez avoir - des personnages dans vos images. Supposons que vous avez une image locale (et non un registre local) nommée centos-base-image avec la balise 7.3.1611.

docker version 
      Client:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

      Server:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

docker images
 REPOSITORY            TAG
 centos-base-image     7.3.1611

Dockerfile

FROM centos-base-image:7.3.1611
RUN yum -y install epel-release libaio bc flex

Résultat

Sending build context to Docker daemon 315.9 MB
Step 1 : FROM centos-base-image:7.3.1611
  ---> c4d84e86782e
Step 2 : RUN yum -y install epel-release libaio bc flex
  ---> Running in 36d8abd0dad9
...

Dans l'exemple ci-dessus, FROM récupère votre image locale, vous pouvez fournir des instructions supplémentaires pour extraire une image de votre registre personnalisé (par exemple, FROM localhost:5000/my-image:with.tag). Voir https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry et https://docs.docker.com/registry/#tldr

Enfin, si votre image n’est pas résolue lorsque vous donnez un nom, essayez ajoutez une balise à l’image lorsque vous la créez

Ce fil de discussion GitHub décrit un problème similaire consistant à ne pas trouver les images locales par leur nom .

En omettant une balise spécifique, docker recherchera une image étiquetée "dernière". Vous devez donc créer une image avec la balise: latest ou modifier votre

3
steven87vt

N'oubliez pas de mettre non seulement la balise mais également le référentiel dans lequel se trouve cette balise, de cette façon:

docker images
REPOSITORY                                TAG                       IMAGE ID            CREATED             SIZE
elixir                                    1.7-centos7_3             e15e6bf57262        20 hours ago        925MB

Vous devriez le référencer de cette façon:

elixir:1.7-centos7_3
0
Rowinson Gallego