39

有没有办法.bash_history与 docker 容器共享一个卷,这样每次我进入 shell 时,我的 bash 历史记录都可以滚动浏览?

能够用 IPython 做同样的事情真是太棒了。

4

6 回答 6

26

这是有关卷的文档中的示例:将主机文件挂载为数据卷

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

这会将您放入新容器中的 bash shell,您将从主机获得 bash 历史记录,当您退出容器时,主机将获得在容器中键入的命令的历史记录。

于 2015-02-02T14:38:12.010 回答
9

在你的docker-compose.override.yml

version: '2'
services:
  whatever:
    …
    volumes:
      - …
      - ~/.bash_history:/root/.bash_history
于 2016-08-20T11:43:12.737 回答
6

要保留 IPython 历史记录,您可以将IPYTHONDIR环境变量设置为映射卷内的某个位置。

docker-compose.override.yml看起来像这样:

version: '2'
services:
  some-service:
    environment:
      - IPYTHONDIR=/app/.ipython
    volumes:
      - .:/app
于 2016-11-09T16:49:39.090 回答
2

我的解决方案在以下情况下很有用:

  • 你不想在你的容器中.bash_history分享你的本地人.bash_history
  • 您使用其他外壳(如鱼壳),但您想.bash_history在构建之间保存
  • 您不想提交.bash_history到 git repo 但您想在容器启动时在同一目录中自动创建它

我假设文件结构是:

docker-compose.yml
docker/
   \--> bash/
      \--> .bashrc
      \--> .bash_history

码头工人-compose.yml

web-service:
  build: .
  volumes:
  - ./docker/bash/.bashrc:/home/YOUR_USER_NAME/.bashrc
  - ./docker/bash:/home/YOUR_USER_NAME/bash

./docker/bash/.bashrc - 它将自动创建 .bash_history:

export HISTFILE=~/bash/.bash_history
touch $HISTFILE

或者,您可以添加到.gitignore

docker/bash/.bash_history
于 2019-02-14T14:48:52.880 回答
2

HISTFILE您也可以使用命名卷来实现这一点,并通过定义环境变量告诉 bash 他可以在哪里找到 bash 历史文件。我在这里解释了更多: https ://antistatique.net/en/we/blog/2019/11/12/tips-docker-keep-your-bash-history

于 2019-11-13T18:29:40.723 回答
0

对于 bash

volumes:
        - ./.data/shell_history/php_bash_history.txt:/home/www-data/.bash_history #bash

对于 sh

volumes:
    - ./.data/shell_history/nginx_bash_history.txt:/root/.ash_history #sh
于 2020-03-05T11:29:17.687 回答