J'ai écrit un fichier Dockerfile qui ressemble à ceci
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y wget
Maintenant, j'ai un fichier appelé abc.txt
dans mon ordinateur hôte. Comment puis-je le copier dans ce conteneur. Y at-il une étape que je peux ajouter dans Dockerfile et qui copie d’hôte en conteneur.
Utilisez la commande COPY comme ceci:
COPY foo.txt /data/foo.txt
# where foo.txt is the relative path on Host
# and /data/foo.txt is the absolute path in the image
lire plus de détails pour COPY dans le documentation officielle
Une alternative serait d'utiliser ADD mais ce n'est pas la meilleure pratique si vous ne souhaitez pas utiliser certaines fonctionnalités avancées d'ADD telles que la décompression de fichiers tar.gz.Si vous souhaitez toujours utiliser la commande ADD, procédez comme suit:
ADD abc.txt /data/abc.txt
# where abc.txt is the relative path on Host
# and /data/abc.txt is the absolute path in the image
pour plus de détails sur ADD, consultez la documentation officielle
Pour ceux qui ont cette erreur (terriblement pas claire):
Échec de la copie: stat /var/lib/docker/tmp/docker-builderXXXXXXX/abc.txt: aucun fichier ou répertoire de ce type
Il pourrait y avoir des tas de raisons, notamment:
context
écrase le contexte du fichier Dockerfile. Vos instructions COPY doivent maintenant suivre un chemin relatif à ce qui est défini dans docker-compose.yml plutôt qu’à votre fichier Docker.COPY abc.txt /app #This won't work
.dockerignore
ou .gitignore
(méfiez-vous des caractères génériques)Parfois, WORKDIR /abc
suivi de COPY . xyz/
fonctionne là où COPY /abc xyz/
échoue, mais c'est un peu moche.
vous pouvez utiliser la commande ADD https://docs.docker.com/engine/reference/builder/#/add ou la commande COPY https://docs.docker.com/engine/reference/ constructeur/#/copy
J'ai fait face à ce problème, je ne pouvais pas copier le répertoire zeppelin [1GB] dans un conteneur docker et je rencontrais un problème.
COPY a échoué: stat /var/lib/docker/tmp/docker-builder977188321/zeppelin-0.7.2-bin-all: no tel fichier ou répertoire
J'utilise docker Version: 17.09.0-ce et j'ai résolu le problème en procédant comme suit.
Étape 1: copiez le répertoire zeppelin [que je veux copier dans le paquet Docker] dans le répertoire contenant "Dockfile"
Étape 2: éditez le fichier Dock et ajoutez la commande [emplacement où vous souhaitez copier] ADD ./zeppelin-0.7.2-bin-all/usr/local /
Étape 3: allez dans le répertoire qui contient DockFile et exécutez la commande [alternatives également disponibles] docker build
Étape 4: image de menu fixe créée avec succès avec les journaux
Étape 5/9: AJOUTER ./zeppelin-0.7.2-bin-all /usr/local/ ---> 3691c902d9fe
Etape 6/9: WORKDIR $ ZEPPELIN_HOME ---> 3adacfb024d8 .... Construit avec succès b67b9ea09f02