如何在Dockerfile中设置命令历史logging

我正在本地运行docker容器来解决其状态。 我并不总是想执行RUN / ENTRYPOINT ,我经常想进入正在运行的容器,做一些事情,然后运行RUN / ENTRYPOINT

只要按下向上键就可以让ENTRYPOINT docker run bash之后, RUN / ENTRYPOINT将会非常方便。 所以我认为这将是很好,如果我可以在Dockerfile修改history -s ...的历史history -s ... 。 这样,只要我docker run bash ,我可以按下,并有RUN / ENTRYPOINT可用。

当我把这个在docker文件中,我得到这个错误:

  /bin/sh: 1: history: not found 

有没有办法在Dockerfile中设置bash历史logging?

由于RUN命令在/bin/sh运行,而没有可用的history命令,所以会出现错误。

为了使这个工作,你需要在构build过程中运行一个交互式的bash shell,所以它会存储你的历史logging条目。

 RUN bash -ic 'history -s foobar' 

这应该留下一个历史文件foobar作为其最近(也可能是唯一)的条目。

在构build关于ioctl的过程中,您会看到一个错误…这很正常,因为交互式bash希望find一个terminal,而不会有一个terminal。 但它应该仍然工作正常。

bash:不能设置terminal进程组(1):设备不适当的ioctl
bash:在这个shell中没有作业控制

请注意,这将作为您运行该命令的用户存储。 如果您的映像使用USER语句切换到非root用户,则应将其放在USER行之后,以便将其存储在映像运行所在的用户中。