quando aggiungo un file o una directory all'immagine docker da un Dockerfile, utilizzo ADD o COPY, ma il percorso del file che voglio aggiungere o copiare deve avere un percorso relativo alla directory Dockerfile. Esiste un metodo per aggiungere un file o una directory da localhost a un'immagine docker utilizzando il percorso assoluto? a proposito, perché il "docker cp" può supportare solo la copia dei file dall'immagine docker a localhost? al contrario, non funziona?Come posso copiare una directory o un file su un'immagine docker da localhost su ubuntu14.04?
risposta
La risposta breve è che non è supportato.
Dal Docker docs:
Il <src> percorso deve essere all'interno del contesto della build; non è possibile AGGIUNGERE ../qualcosa/qualcosa, perché il primo passaggio di una build finestra mobile consiste nell'inviare la directory di contesto (e le sottodirectory) al daemon docker.
Inoltre, i link simbolici non sono supportati in modo che non è possibile trucco l'accumulo collegando in una posizione diversa sul localhost.
Tuttavia, URL: s sono supportati così un modo per aggirare il problema è quello di servire i file su HTTP se si attiva un server web sul tuo localhost (o in un contenitore di finestra mobile).
Il comando docker cp
(sfortunatamente) è supportato solo dal contenitore all'host, non viceversa. Questo è descritto nel docs. Il modo per aggirare questo è usare docker volumes dove i dati possono essere condivisi.
['finestra mobile cp' ] (https://docs.docker.com/engine/reference/commandline/cp/) ora può copiare i file in entrambe le direzioni. – Zaz
c'è una soluzione quando si utilizza docker-compose
:
api1:
build: .
dockerfile: cluster/manifests/Dockerfile-NodeAPI
ports:
- 8080
links:
- mongo
- redis
command: "nodemon lib/app.js -e js,json,scss,css,html"
questo ancora non vi permetterà di fare percorsi parenti, tuttavia BasePath nel Dockerfile
sarà ./
invece di cluster/manifests/
La soluzione per chi usa il compositore deve utilizzare un volume che punta alla cartella:
#docker-composer.yml
foo:
build: foo
volumes:
- /local/path/:/path/:ro
Ma sono abbastanza sicuro che sia possibile giocare con volumes in Dockerfile.
Per copiare un file, è sufficiente utilizzare docker cp
:
docker cp file.txt CONTAINER:/path/to/dest
Per copiare una directory, utilizzare un tubo tar:
tar -c "dir/" | docker run -i -a stdin CONTAINER tar -xC /path/to/dest
Spiegazione risposta di wassgren, è possibile anche una finestra mobile SDK a Fai questo. Non sono sicuro di ogni SDK, ma almeno lo docker-java invia il contesto come inputstream alla finestra mobile. Quindi, si specifica dockerClient.withBaseDirectory()
e dockerClient.withDockerFile()
. Potresti usare un approccio più di scripting e usare gradle o groovy per fare questo ed evitare di dover "compilare" java per questo ogni volta.
- 1. Copiare i file da una directory in una directory esistente
- 2. Come creare un file su una directory?
- 3. Creare una directory e copiare un file
- 4. Come copiare più file da una directory diversa usando cp?
- 5. Docker: l'aggiunta di un file da una directory padre
- 6. Come posso aggiornare Docker su un Mac?
- 7. Come posso copiare diversi file binari in un file su un sistema Linux?
- 8. Copiare il file da un server remoto o l'URL
- 9. Come copiare file da una condivisione Unix su una macchina Windows usando formica?
- 10. Come copiare i miei file da una directory a un'altra directory?
- 11. COPIARE un file in un Dockerfile, nessun file o directory di questo tipo?
- 12. Come copiare le cartelle nell'immagine docker da Dockerfile?
- 13. Docker con marca: modifica immagine su file Docker modifica
- 14. Come utilizzare robocopy per copiare directory su domini diversi
- 15. Posso semplicemente copiare un repository git su Windows?
- 16. Come copiare un file su un server FTP?
- 17. Come posso verificare se esiste un file o una directory di file in bash?
- 18. Usa il file .htaccess su un server localhost apache
- 19. Come posso copiare file da un ramo all'altro usando git?
- 20. Come ascoltare solo su localhost su MongoDB
- 21. XmlWriter da scrivere su una stringa anziché su un file
- 22. come copiare i file su un percorso specifico?
- 23. Come posso copiare una directory usando Boost Filesystem
- 24. Docker: Montare la directory da un contenitore a un altro
- 25. context.getImageData() su localhost?
- 26. Come esporre una porta UDP su Docker?
- 27. Abilita ZipArchive su localhost
- 28. Come copiare tutti i file da una directory a un'altra in uno script bash
- 29. Utilizzo di WCF su Localhost su Azure
- 30. Posso semplicemente copiare .git in un'altra directory?
Per citare la documentazione di Docker: La copia rispetta le seguenti regole: Il percorso deve essere all'interno del contesto della generazione; –
Possibile duplicato di [Docker: aggiunta di un file da una directory padre] (http://stackoverflow.com/questions/24537340/docker-adding-a-file-from-a-parent-directory) – Gordon