2017-04-20 18 views
1

ドッカーコンテナのエントリポイントとしてシェルスクリプトを実行しようとしています。エントリポイントの定義時にDockerコンテナが再起動する

:このため、私はこの

abc.Dockerfile

FROM ubuntu 
COPY abc.sh/
RUN chmod +x /abc.sh 
ENTRYPOINT /abc.sh 

Dockerfileが正常に構築されますが、容器にexecを行う上で、私はエラーを取得していますように私のDockerfileにエントリポイントを定義しました

$ docker exec -it drupaldocker_myapp_1 bash 
Error response from daemon: Container ca32bafe2247e51d5e9b1a8f0cf83457ccecb29e8ff9747a8c98aa6a046b0550 is restarting, wait until the container is running 

ドッカPSの出力リレー:

Raghav-Macbook:iflychat-server-development-system raghav$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS       PORTS     NAMES 
ca32bafe2247  drupaldocker_myapp "/bin/sh -c \"/abc.sh\"" 9 minutes ago  Restarting (0) 2 minutes ago       drupaldocker_myapp_1 

マイドッキングウィンドウ-compose.yml

また、 docker-compose upは私にエラーを与えていない
version: '2' 
services: 
    myapp: 
    build: 
    context: . 
    dockerfile: abc.Dockerfile 
    restart: always 
    tty: true 

abc.sh

#!bin/sh 

ls 
cat /abc.sh 

のように見えます。出力は次のようになります

Raghav-Macbook:drupal-docker raghav$ docker-compose up 
Recreating drupaldocker_myapp_1 
Attaching to drupaldocker_myapp_1 
myapp_1 | oot etc lib media opt root sbin sys usr 
myapp_1 | bin dev home lib64 mnt proc run srv tmp var 
myapp_1 | #!bin/sh 
myapp_1 | 
myapp_1 | ls 

この作業にはどのような変更が必要ですか?エントリポイントスクリプトが実行されるとdocker logs drupaldocker_myapp_1

abc.sh boot etc lib media opt root sbin sys usr 
bin dev home lib64 mnt proc run srv tmp var 
#!bin/sh 

ls 
cat /abc.shabc.sh boot etc lib media opt root sbin sys usr 
bin dev home lib64 mnt proc run srv tmp var 
#!bin/sh 

ls 
cat /abc.sh 

EDIT 2

EDIT

出力は、コンテナが停止しますでしょうか?

+0

'docker logs drupaldocker_myapp_1'の出力を投稿してください – kstromeiraos

+2

このコンテナは何をする予定ですか?スクリプトは1秒以内に終了し、コンテナはスクリプトの再起動と再実行を繰り返します。 – tkausl

+0

'docker run --restart = always'で起動しますか? – user2915097

答えて

1

ドッカーが実行していて、ドッカーの実行コマンドではないと思っています。 Dockerのexecは、既に展開された稼動中のコンテナで何かを起動することです...あなたが望むのは、展開時に一度スクリプトを起動することです。

ドッカーファイルを変更します。この代わりの最後の行にエントリポイントを使用します、それを実行するための

CMD ["bash", "-c", "/abc.sh"] 

このコマンドを使用してスクリプトが自動的に起動されます。

docker run -it drupaldocker_myapp_1 

あなたがドッキングウィンドウrunコマンドの終わりあなたにbashを置く場合「コンテナ内のインタラクティブbashのコンソールを得るでしょうが、自動スクリプトの起動が回避される:

docker run -it drupaldocker_myapp_1 bash 

は、あなたの質問に答える「コンテナが停止しますんエントリポイントスクリプトが実行されると? "答えははいです。エントリポイントスクリプトが実行され、それ以上何も実行されなければ、コンテナはそれ以上何もしないので停止します。コンテナを起動して実行したい場合は、スクリプトのように直ちに終了しないで、コンテナを内部で実行する必要があります。

希望します。

関連する問題