2016-07-15 67 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