bash – 如何在每个“exec”命令中执行Docker镜像的入口点?

前端之家收集整理的这篇文章主要介绍了bash – 如何在每个“exec”命令中执行Docker镜像的入口点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在尝试使用Dockerspec测试Dockerfiles之后,我终于有了an issue我无法正确解析.@H_301_2@

我认为问题来自Docker本身;如果我理解它的进程,一个Entrypoint只在运行时执行,但如果容器保持启动并且我启动了一个“exec”命令,则不会重新调用它.@H_301_2@

我认为这是通缉行为.@H_301_2@

但是如果Entrypoint是一个“gosu”脚本,它位于我的所有命令之前,那就是一个问题……@H_301_2@

例@H_301_2@

“myImage”有这个入口点:
gosu 1000:1000“$@”@H_301_2@

如果我启动:docker run -it myImage id -u@H_301_2@

输出为“1000”.@H_301_2@

如果我启动一个容器:docker run -it myImage bash@H_301_2@

在此容器中,id -u输出“1000”.@H_301_2@

但是如果我在这个容器中启动一个新命令,它会启动一个新shell,并且不执行Entrypoint,所以:docker exec CONTAINER_ID id -u@H_301_2@

输出“0”,因为新shell以“root”身份启动.@H_301_2@

有没有办法每次执行入口点?
或者重新使用shell打开?@H_301_2@

或者更好的方法呢?@H_301_2@

或者,也许我什么都不懂?

猜你在找的Docker相关文章