2015-02-02 15 views
18

C'è un modo per condividere un volume .bash_history con un contenitore di finestra mobile in modo che ogni volta che vado in una shell ho la mia cronologia di bash disponibile per lo scorrimento?Docker e .bash_history

Sarebbe fantastico essere in grado di fare lo stesso con IPython.

risposta

13

E 'l'esempio della documentation about volume: Mount a host file as a data volume:

docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash 

Questo vi porterà in una shell bash in un nuovo contenitore, avrete la vostra storia bash dall'host e quando si esce dal contenitore, l'host avrà la cronologia dei comandi digitati mentre si trova nel contenitore.

+0

avrei dovuto aggiungere un commento su questo - ho visto questo e l'ho provato, ma senza successo. Sembra che i comandi eseguiti nel contenitore non aggiornino il file '.bash_history'. Sto eseguendo i comandi all'interno del contenitore come utente root. Qualche idea? – tzenderman

+0

È lo stesso utente sull'host e nel contenitore? – user2915097

+0

No, l'utente sul mio host è mio utente e l'utente all'interno del contenitore è root. Ma non penso che dovrebbe cambiare qualcosa? Quando sono all'interno del contenitore, sembra che non ci sia alcun file .bash_history su cui sia stato scritto quando eseguo i comandi. – tzenderman

3

Nel vostro docker-compose.override.yml:

version: '2' 
services: 
    whatever: 
    … 
    volumes: 
     - … 
     - ~/.bash_history:/root/.bash_history 
+0

La documentazione indica che i volumi montati devono iniziare con '/'. Non funziona per me con '~'. – aghull

+0

@aghull puoi sostituire '~' con il valore di '$ HOME', ma sarà meno portabile –

4

Per mantenere la storia IPython, è possibile impostare la variabile IPYTHONDIR ambiente da qualche parte all'interno del vostro volume mappato.

Il docker-compose.override.yml sarebbe simile a questa:

version: '2' 
services: 
    some-service: 
    environment: 
     - IPYTHONDIR=/app/.ipython 
    volumes: 
     - .:/app