如何在Dockerfile中设置命令历史记录

时间:2017-02-02 17:30:56

标签: bash docker sh

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

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

当我把它放在docker文件中时,我收到了这个错误:

 /bin/sh: 1: history: not found

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

1 个答案:

答案 0 :(得分:2)

您收到错误是因为RUN命令在/bin/sh中运行,该命令没有history命令。

要使其工作,您需要在构建期间运行交互式bash shell,因此它将存储您的历史记录条目。

RUN bash -ic 'history -s foobar'

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

你会在构建期间看到一个关于ioctl的错误...这是正常的,因为交互式bash期望找到一个终端,并且不会是一个终端。但它应该仍然可以正常工作。

  

bash:无法设置终端进程组(1):不适合设备的ioctl   bash:这个shell中没有作业控制

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