2015-02-02 4 views
18

Есть ли способ поделиться томом .bash_history с контейнером докера, чтобы каждый раз, когда я вхожу в оболочку, у меня есть моя история bash для прокрутки?Docker и .bash_history

Было бы замечательно иметь возможность делать то же самое с IPython.

ответ

13

Это пример из documentation about volume: Mount a host file as a data volume:

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

Это приведет к вам в Баш оболочку в новый контейнер, вы будете иметь свою историю Баш от хоста и при выходе из контейнер, хост будет иметь историю команд, введенных в контейнере.

+0

Я должен добавить комментарий по этому поводу - я видел это и пробовал, но без успеха. Кажется, что команды, которые я запускаю внутри контейнера, не обновляют файл '.bash_history'. Я выполняю команды внутри контейнера в качестве пользователя root. Есть идеи? – tzenderman

+0

Это тот же пользователь на хосте и в контейнере? – user2915097

+0

Нет, пользователь моего хоста - мой пользователь, а пользователь внутри контейнера - root. Но я не думаю, что это должно что-то изменить? Когда я внутри контейнера, кажется, что нет файла .bash_history, где бы ни было написано, когда я выполняю команды. – tzenderman

3

В вашем docker-compose.override.yml:

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

В документации указано, что установленные тома должны начинаться с '/'. Это не работает для меня с '~'. – aghull

+0

@aghull вы можете заменить '~' значением '$ HOME', но он будет менее переносимым –

4

Чтобы сохранить историю IPython, вы можете установить переменные окружения IPYTHONDIR где-то в пределах вашего отображенного объема.

docker-compose.override.yml будет выглядеть следующим образом:

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