Docker和.bash_history

时间:2015-02-02 14:23:39

标签: bash docker ipython dockerfile

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

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

6 个答案:

答案 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)

docker-compose.override.yml

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