Comment puis-je copier un répertoire ou un fichier à un panneau de l'image à partir de localhost sur ubuntu14.04?
quand j'ajoute un fichier ou un répertoire sur le panneau de l'image par un Dockerfile, j'utilise d'AJOUTER ou de COPIE , mais le chemin d'accès du fichier que je veux ajouter ou copie doit un chemin relatif vers le Dockerfile du répertoire. Est-il une méthode pour ajouter un fichier ou un répertoire à partir de localhost pour le panneau de l'image en utilisant le chemin absolu? par ailleurs, pourquoi le "docker cp" ne peuvent prendre en charge la copie des fichiers à partir de docker image à localhost? au contraire , il ne fonctionne pas ?
Pour citer le Panneau de la documentation: La copie obéit aux règles suivantes: <src> chemin d'accès doit être à l'intérieur du contexte de la construction;
Double Possible de Docker: ajout d'un fichier à partir d'un répertoire parent
Double Possible de Docker: ajout d'un fichier à partir d'un répertoire parent
OriginalL'auteur lightning-li | 2014-10-24
Vous devez vous connecter pour publier un commentaire.
La réponse courte est que il n'est pas pris en charge.
De la Docker docs:
En outre, les liens symboliques ne sont pas pris en charge, donc il n'est pas possible de truc la construire en le reliant à un autre emplacement sur le localhost.
Cependant, URL:s sont pris en charge donc un moyen de contourner le problème est de servir les fichiers via HTTP, si vous activez un serveur web sur votre localhost (ou dans un conteneur docker).
La commande
docker cp
(malheureusement) n'est pris en charge à partir du conteneur à l'hôte, et non vice versa. Ceci est décrit dans le docs. Le chemin à parcourir autour de ce est d'utiliser docker volumes où les données peuvent être partagées.docker cp
vous pouvez maintenant copier des fichiers dans les deux sens.OriginalL'auteur wassgren
La solution pour ceux qui utilisent le compositeur est d'utiliser un volume pointant vers le dossier:
Mais je suis sûr que le peut être fait en jouant avec des volumes dans le Dockerfile.
OriginalL'auteur wikier
Il existe une solution de contournement lorsque vous utilisez
docker-compose
:Cela ne vous permettra pas de faire des parents des chemins, cependant basepath dans le
Dockerfile
sera./
au lieu decluster/manifests/
OriginalL'auteur eljefedelrodeodeljefe
Pour copier un fichier, il suffit d'utiliser
panneau de cp
:De copier un répertoire, utilisez un tar pipe:
OriginalL'auteur Zaz
Exposer sur wassgren réponse, vous pouvez également vous docker SDK pour ce faire. Je ne suis pas sûr de chaque SDK, mais au moins docker-java envoie le contexte comme un inputstream de docker. Donc, vous spécifiez
dockerClient.withBaseDirectory()
etdockerClient.withDockerFile()
. Vous pourriez utiliser un script approche et l'utilisation gradle ou groovy pour ce faire et éviter d'avoir à "compiler" java pour cela à chaque fois.OriginalL'auteur user2243357