C'è un modo semplice per convertire un Dockerfile in uno script Bash per installare tutto il software su un vero SO? Il motivo è che il container docker non può essere modificato e vorrei modificare alcune cose in seguito se non funzionano.convertire lo script Dockerfile in Bash
risposta
In breve - no.
Analizzando il Dockerfile con uno strumento come dockerfile-parse è possibile eseguire i singoli comandi RUN
, ma ciò non replicherebbe l'output del Dockerfile.
Dovresti eseguire la stessa versione dello stesso sistema operativo.
I comandi ADD
e COPY
influiscono sul filesystem, che si trova nel proprio spazio dei nomi. Esecuzione di questi al di fuori del contenitore potrebbe potenzialmente rompere il sistema host. Il tuo host avrà anche file in luoghi che l'immagine del contenitore non avrebbe.
VOLUME
anche le montature influiscono sul file system.
L'immagine FROM
(che a sua volta potrebbe discendere da altre immagini) potrebbe avere altre applicazioni installate.
Scrittura di file Docker può essere un processo lento se è presente una fase di installazione o di download di grandi dimensioni. Per attenuarlo, prova ad aggiungere nuovi pacchetti come nuovo comando RUN
(per sfruttare la cache) e aggiungere funzionalità in modo incrementale, ottimizzando/comprimendo i layer solo quando la funzionalità è completa.
Si potrebbe anche voler usare qualcosa come ServerSpec per ottenere un approccio TDD alle immagini del contenitore e prevenire regressioni durante lo sviluppo.
Documenti di best practice here, gotchas e original article.
è possibile installare l'applicazione all'interno dockerfile come questo
FROM <base>
RUN apt-get update -y
RUN apt-get install <some application> -y
Fondamentalmente si può fare una copia del file system del contenitore Docker con “finestra mobile esportazione”, che è quindi possibile scrivere su un dispositivo di loop:
docker build -t <YOUR-IMAGE> ...
docker create --name=<YOUR-CONTAINER> <YOUR-IMAGE>
dd if=/dev/zero of=disk.img bs=1 count=0 seek=1G
mkfs.ext2 -F disk.img
sudo mount -o loop disk.img /mnt
docker export <YOUR-CONTAINER> | sudo tar x -C /mnt
sudo umount /mnt
Converti un contenitore di Docker in un'immagine di file system non elaborata.
Maggiori informazioni qui: http://mr.gy/blog/build-vm-image-with-docker.html
- 1. Eseguire uno script in Dockerfile
- 2. Impossibile convertire script Bash script Zsh
- 3. Come eseguire la funzione bash in Dockerfile
- 4. Convertire lo script MySQL in SQL Server
- 5. Bash: non lo script assoluto #! interprete?
- 6. parametri di script in Bash
- 7. bash - passa lo script come argomento di un altro script
- 8. ottenere lo script bash per echo il comando in esecuzione
- 9. Lo script di Bash non è in attesa di lettura
- 10. Ti serve lo shebang in tutti gli script di bash?
- 11. Errore standard_in in script bash
- 12. Esecuzione script Cmder bash
- 13. "Questo venerdì" in script bash
- 14. Espressione regolare in Bash Script
- 15. script Bash e questione
- 16. Cifra un file usando lo script della shell bash
- 17. Come analizzare i timestamp EXIF con lo script Bash
- 18. Come stampare due array affiancati con lo script di bash?
- 19. Come eseguire lo script bash riga per riga?
- 20. Abilita il colore di output bash con lo script Lua
- 21. Esegui script bash da un altro script senza attendere che lo script finisca di essere eseguito?
- 22. bash: errore se lo script non viene eseguito da root
- 23. Passaggio di argomenti con spazi tra (bash) lo script
- 24. Lo script Bash legge solo la prima riga del file
- 25. Unit Test per lo script di completamento Bash
- 26. modifica il file di configurazione usando lo script bash
- 27. Git commit bash script
- 28. Script Bash o Bourne?
- 29. Script Bash se istruzioni
- 30. script bash da eseguire in 5 minuti
È possibile eseguire i comandi che il Dockerfile te stesso viene eseguito. Ma non è possibile "convertire" l'immagine su cui si basa su uno script. Se non ti piace come l'immagine della finestra mobile ha funzionato, modifica il Dockerfile e riprova? –