2016-07-15 123 views
2

不会退出我已经得到了我作为运行可以从码头工人容器

docker run -it --rm --name <container_name> <image>:<tag> 

通常是一个容器,我陷入从中我可以用exit命令退出集装箱码头。现在,我有一个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次)。

为什么我的容器有这种行为?

+0

你如何启动容器,你能分享确切的命令吗?你在使用任何流程管理器吗? – Shibashis

+0

你有确切的命令'docker run -it --rm --name ' – GuillaumeA

回答

0

苏手册页说:

- ,-l,--login
提供了类似的环境中哪些用户期望有 用户直接登录

它产生另一个从你的外壳exit回到父母的container外壳。

因此改变

su - -c "python <path_to_script>/myscript.py" $USER 

su "$USER" -c "python <path_to_script>/myscript.py" 

可能是解决


旁注:的与-c-在一起没有意义时你的目的只是为了执行某些命令和完成任务

+0

我同意,但我需要'-',因为我的容器安装了anaconda,如果我没有运行' - ',python命令不链接到anaconda,而是链接到python。当我的python脚本退出时,我会期望我返回到根shell,但是没有。 python脚本被一次又一次地执行 – GuillaumeA

0

这是如何调用你的shell脚本

# Add new user 
RUN groupadd -r $GROUP --gid $GROUPID 
RUN useradd -r $USER --uid $USERID --gid $GROUPID 
RUN whoami 
USER $USER 
RUN whoami 

之前更改$ USER你Dockerfile里面......避免在Dockerfile

使用 su
+0

感谢您的回答,但我无法将它放到DockerFile中,因为我在生成映像时不知道$ USER。相反,我运行脚本作为入口点,在其中添加用户和组。 – GuillaumeA

相关问题