Linux入门教程:Docker实践(19) – 保留容器的bash历史记录,-bash不过仍然有一些不方便
Linux入门教程:Docker实践(19) – 保留容器的bash历史记录,-bash不过仍然有一些不方便
我们知道在容器内做试验完成时,容器可以设置自动清除,这就省了好多事。不过仍然有一些不方便的地方。其中一个是我们可能需要在容器中多次执行一个相同的命令,而bash历史又没有了,只能手打。
问题
你想与容器共享你的主机bash历史记录。
解决方法
为docker run命令设置一个别名来与主机共享bash历史记录。
讨论
要理解这个问题,我们来展示一个场景。
假设你在Docker容器做试验,比如做一些有趣的和可重复使用的东西。这里我们使用echo命令,但这可能是一个长且复杂的一连串程序:
过了一些时间,你想重新执行之间执行过的复杂的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历史记录的设置添加到命令中去。
评论暂时关闭