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历史记录的设置添加到命令中去。
Docker实践(2) – 以守护进程运行容器
03-08
Docker run参考(3) – 容器标识
04-03
Docker实践(26) – 设置从Dockerfile指定点缓存失效
02-12
Docker实践(3) – 移动Docker到一个不同的分区
05-21
Win7如何清除资源管理器中地址栏中的历史记录
07-14
Docker使用示例(3) – 调试容器
06-16
Docker使用示例(4) – 清理容器和镜像
06-10
Docker用户指南(15) – 默认bridge网络 – 绑定容器端口到主机
03-31
Docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀
06-26
Docker使用示例(1) – 创建容器
03-23
Docker命令行参考(14) – Docker attach附着到一个运行中的容器
07-19
Docker命令行参考(18) – Docker exec在运行中的容器执行一个命令
06-02
Docker命令行参考(22) – Docker pause暂停容器内所有的进程
02-21
Docker命令行参考(26) – Docker stats实时显示容器资源使用统计
06-21
Docker命令行参考(4) – Docker inspect显示容器或镜像相关信息
07-19
Dockerfile参考(14) – WORKDIR设置RUN CMD ENTRYPOINT等指令的工作目录
03-23
Docker run参考(8) – 退出状态码
05-15
Dockerfile参考(1) – 用法
05-22
Dockerfile参考(2) – 格式
05-31
Docker命令行参考(11) – Docker load从tar归档文件或STDIN导入镜像
07-20