牛下载:绿色软件官方软件免费下载基地!
所在位置:首页 > 新闻资讯 > Docker实践(19) – 保留容器的bash历史记录

Docker实践(19) – 保留容器的bash历史记录

发布时间:2020-04-21 16:11:03来源:阅读:

我们知道在容器内做试验完成时,容器可以设置自动清除,这就省了好多事。不过仍然有一些不方便的地方。其中一个是我们可能需要在容器中多次执行一个相同的命令,而bash历史又没有了,只能手打。

问题

你想与容器共享你的主机bash历史记录。

解决方法

为docker run命令设置一个别名来与主机共享bash历史记录。

讨论

要理解这个问题,我们来展示一个场景。
假设你在Docker容器做试验,比如做一些有趣的和可重复使用的东西。这里我们使用echo命令,但这可能是一个长且复杂的一连串程序:

$ docker run -ti --rm ubuntu /bin/bash
$ echo my amazing command
$ exit

过了一些时间,你想重新执行之间执行过的复杂的echo命令。不过,你不记得命令了,而且终端会话也找不到这个命令,你尝试找bash历史记录,但没有任何输出:

$ history | grep amazing

为了解决这个问题,我们可以在你运行docker镜像时挂载一个volume,如下:

$ docker run -e HIST_FILE=/root/.bash_history 
 -v=$HOME/.bash_history:/root/.bash_history 
 -ti ubuntu /bin/bash

命令太长太难记了,我们把它设置为一个别名吧,在~/.bashrc文件中添加:

$ alias dockbash='docker run -e HIST_FILE=/root/.bash_history 
 -v=$HOME/.bash_history:/root/.bash_history

这个体验仍然不好,因为当你要执行docker run命令时都要记住执行dockerbash命令。要获得更加无缝的体验,你您可以将这些添加到〜/ .bashrc文件:

function basher() {
  if [[ $1 = 'run' ]]
  then
shift
/usr/bin/docker run 
  -e HIST_FILE=/root/.bash_history 
  -v $HOME/.bash_history:/root/.bash_history "$@"
   else
    /usr/bin/docker "$@"
fi
}alias docker=basher

现在当你打开bash shel并执行任意的docker run命令时都会自动把bash历史记录的设置添加到命令中去。

反对
收藏
  • 热门资讯
  • 最新资讯
  • 应用排行榜
  • 游戏排行榜