gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:05:16 25 4
gpt4 key购买 nike

我正在本地运行 docker 容器以对其状态进行故障排除。我并不总是想执行 RUN/ENTRYPOINT ,我经常想进入正在运行的容器,做一些事情,然后运行RUN/ENTRYPOINT .

RUN 会 super 方便/ENTRYPOINT在我之后可用 docker run bash只需按向上键。所以我想如果我可以用 history -s ... 修改历史记录就好了在 Dockerfile .那样的话,只要我docker run bash ,我可以按下并获得 RUN/ENTRYPOINT可用的。

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

 /bin/sh: 1: history: not found

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

最佳答案

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

要完成这项工作,您需要在构建期间运行一个交互式 bash shell,以便它存储您的历史记录条目。

RUN bash -ic 'history -s foobar'

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

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

bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell



请注意,这将为您运行命令的用户存储。如果您的镜像切换到具有 USER 的非 root 用户声明,你应该把它放在 USER 之后行,因此它存储在您的图像运行的用户中。

关于bash - 如何在 Dockerfile 中设置命令历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com