2016-07-15 3 views
2

から出ることができない、私は私がexitコマンドで終了することができ、そこからコンテナターミナルに分類されます。私のスクリプトが終了したら、今は私が正常に</p> <pre><code>docker run -it --rm --name <container_name> <image>:<tag> </code></pre> <p>として実行コンテナを持っているドッカーコンテナ

#!/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スクリプトですべてが再び走ったとされています。今、私はシンプルなbashスクリプトを実行し、エントリポイントで終わるDockerFileを持っています再び(例えば10回)。

なぜこのコンテナにこの動作がありますか?

+0

どのようにコンテナを始動していますか、正確なコマンドを共有できますか?どのプロセスマネージャを使用していますか? – Shibashis

+0

正確なコマンド 'docker run -it --rm --name ' – GuillaumeA

答えて

0

SUのマン氏は述べています:

- 、-l、
は、ユーザーが ユーザが直接

をログインしていたそれは別のものをスポーン期待するものと同様の環境を提供--loginあなたがexitの親から復帰するまでのシェルcontainerシェル。

ので

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

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

を変更すると、ソリューション


追記かもしれません:-cと一緒に-は意味がありません。あなたの目的は、単にいくつかのコマンドを実行して仕事を終えることです

+0

私は同意しますが、私のコンテナにはanacondaがインストールされていて ' '、pythonコマンドはanacondaではなくpythonにリンクします。私のpythonスクリプトが終了すると、私はルートシェルに戻ってきたと思いますが、いいえ。 Pythonスクリプトは何度も何度も実行されています – GuillaumeA

0

これは...

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

前に、あなたのシェルスクリプトを呼び出すには、あなたのDockerfile内の$ USERを変更Dockerfile

suを使用しないようにする方法であります
+0

あなたの答えをありがとうが、画像をビルドするときに$ USERを知らないのでDockerFileに入れられません。代わりに、ユーザーとグループを追加するENTRYPOINTとしてスクリプトを実行します。 – GuillaumeA

関連する問題

 関連する問題