有没有办法与docker容器共享.bash_history
卷,这样每次进入shell时我都可以滚动浏览bash历史记录?
能用IPython做同样的事情真是太棒了。
答案 0 :(得分:16)
这是documentation about volume: Mount a host file as a data volume:
的例子docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash
这将使您进入新容器中的bash shell,您将获得主机 bash历史记录,当您退出容器时,主机将具有键入的命令的历史记录在容器中。
答案 1 :(得分:5)
version: '2'
services:
whatever:
…
volumes:
- …
- ~/.bash_history:/root/.bash_history
答案 2 :(得分:4)
要保留IPython历史记录,您可以将IPYTHONDIR
环境变量设置为映射卷中的某个位置。
docker-compose.override.yml
看起来像这样:
version: '2'
services:
some-service:
environment:
- IPYTHONDIR=/app/.ipython
volumes:
- .:/app
答案 3 :(得分:1)
您也可以使用命名卷来实现这一点,并通过定义HISTFILE
环境变量来告诉bash他可以在哪里找到bash历史文件。我在这里解释了更多:
https://antistatique.net/en/we/blog/2019/11/12/tips-docker-keep-your-bash-history
答案 4 :(得分:0)
在以下情况下,我的解决方案很有用
:.bash_history
共享本地.bash_history
.bash_history
.bash_history
提交到git repo,但是您想在容器启动时在同一目录中自动创建我认为文件结构为:
docker-compose.yml
docker/
\--> bash/
\--> .bashrc
\--> .bash_history
docker-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
答案 5 :(得分:0)
对于bash
<div class="base-image-input" :style="{ 'background-image': `url(${imageData})` }" @click="pickFile">
<span v-if="!imageData" class="placeholder">
Choose an Image
</span>
<input class="file-input" ref="image" type="file" @input="onFilePicked" />
</div>
对于sh
volumes:
- ./.data/shell_history/php_bash_history.txt:/home/www-data/.bash_history #bash