如何在容器重建后,仍旧保留之前的bash历史?
bash 命令行历史可以让我们快速重复之前使用过的命令,也可以检查之前输入的命令是否存在什么问题。你只需要在命令行终端,按向上 ↑ 箭头按钮就能查看 bash 历史。可以说是非常好用的功能。但是重新构建容器的话,或者切换会话的话,之前的历史记录就都丢失了。不过办法总比困难多。今天就来说一说,怎样可以做到,即便是重建容器,仍旧能保留 bash 历史。
首先,更新 Dockerfile ,使得每次 bash 中使用命令,都会更新历史,并把历史保存在持久化的路径中。
如果你是 root 用户,可以这样更新 Dockerfile :
如果你是 非root 用户,可以这样更新 Dockerfile 。
将 user-name-goes-here 替换成你容器中 非root用户 的用户名。
整个逻辑是:设置 PROMPT_COMMAND 环境变量,设为:展示所有 ( all 即 -a )历史。然后将 HISTFILE 变量设为存放历史记录的路径。如果需要,再创建 /commandhistory 路径以及 .bash_history 文件,设置文件的权限以便用户有权写入文件。最后,把这段命令片段写入用户的 .bashrc 文件。这样每次启动容器,都会执行这个代码片段。
接着添加本地卷来存储命令行历史。这一步会根据你使用 Dockerfile 或 image,还是使用 Docker Compose 而有所不同。
如果使用的是 Dockerfile 或 image:
在 devcontainer.json 文件中,使用 mounts 属性:
如果使用的是 Docker Compose :
更新或扩展你的 docker-compose.yml 文件,针对目标服务,做如下修改:
最后,为了让所做的修改能够生效,如果已经构建过容器,并且已连接容器,可以在 Command Palette 中运行 Remote-Containers: Rebuilld Container 命令;如果没有,则运行 Remote-Containers: Open Folder in Container 命令。
之后,无论你怎么重构容器,之前输入过的命令行历史都会被保留下来。欢迎关注我的账号,我将持续更新。我们下期,不见不散。
推荐文章: