有没有办法.bash_history
与 docker 容器共享一个卷,这样每次我进入 shell 时,我的 bash 历史记录都可以滚动浏览?
能够用 IPython 做同样的事情真是太棒了。
有没有办法.bash_history
与 docker 容器共享一个卷,这样每次我进入 shell 时,我的 bash 历史记录都可以滚动浏览?
能够用 IPython 做同样的事情真是太棒了。
docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash
这会将您放入新容器中的 bash shell,您将从主机获得 bash 历史记录,当您退出容器时,主机将获得在容器中键入的命令的历史记录。
在你的docker-compose.override.yml
:
version: '2'
services:
whatever:
…
volumes:
- …
- ~/.bash_history:/root/.bash_history
要保留 IPython 历史记录,您可以将IPYTHONDIR
环境变量设置为映射卷内的某个位置。
docker-compose.override.yml
看起来像这样:
version: '2'
services:
some-service:
environment:
- IPYTHONDIR=/app/.ipython
volumes:
- .:/app
我的解决方案在以下情况下很有用:
.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
HISTFILE
您也可以使用命名卷来实现这一点,并通过定义环境变量告诉 bash 他可以在哪里找到 bash 历史文件。我在这里解释了更多:
https ://antistatique.net/en/we/blog/2019/11/12/tips-docker-keep-your-bash-history
对于 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