不能从Docker容器中退出
我有一个容器,我运行
docker run -it --rm --name <container_name> <image>:<tag>
通常情况下,我可以通过exit
命令进入集装箱docker。 现在,我有一个DockerFile,它以运行一个简单的bash脚本的入口点结束:
#!/usr/bin/env bash # Add new user groupadd -r $GROUP --gid $GROUPID useradd -r $USER --uid $USERID --gid $GROUPID # Launch application with new user su - -c "python <path_to_script>/myscript.py" $USER
现在,一旦我的脚本结束,我期望从容器中退出,但入口点bash脚本中的所有内容都会一次又一次地运行(比如10次)。
为什么我的容器有这种行为?
su manpage说:
– , – l,–login
提供一个类似于用户希望用户直接login的环境
它从您exit
位置衍生出另一个shell,以回滚到父container
shell。
所以改变
su - -c "python <path_to_script>/myscript.py" $USER
至
su "$USER" -c "python <path_to_script>/myscript.py"
可能是解决scheme
SIDENOTE:当你的目标只是执行一些命令并完成工作时,和-c
一起没有任何意义
这是如何更改您的Dockerfile中的$ USER
# Add new user RUN groupadd -r $GROUP --gid $GROUPID RUN useradd -r $USER --uid $USERID --gid $GROUPID RUN whoami USER $USER RUN whoami
在调用你的shell脚本之前…避免在Dockerfile中使用su