Docker:コンテナが再び再起動し続ける


108

今日、appcontainers / mediawiki docker imageを使用してMediaWikiのインスタンスをデプロイしましたが、今では手掛かりを見つけることができない新しい問題が発生しています。次を使用してmediawikiフロントコンテナーにアタッチしようとした後:

docker attach mediawiki_web_1

Terminated私が無視する理由のために私の設定で答え、これも試してみます:

docker exec -it mediawiki_web_1 bash

エラーメッセージに近いものを取得します。

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

そして、このコンテナは再起動を停止しないので、新しい問題があります。docker ps -awhich を使用すると、常にSTATUSが返されることがわかりますRestarting (127) x seconds ago

実は、私はコンテナーを停止することができます(私はテストしました)が、それを再開すると、コンテナーを再起動ループに戻すようです。

ここで問題になる可能性のあるアイデアは何ですか?取り付けようとするまで、すべてが適切に機能していました...

悲しいです :-(


forums.docker.com/t/how-to-delete-cache/5753/2を使用して、Dockerキャッシュ全体を完全に削除することで成功しました(rmiに-fタグも追加しました)。それから私は私のコンテナを再構築し、彼らは働いた。
alberto56 2016年

(@ alberto56のリンクで説明されているように)コンテナーとイメージを削除するだけでは不十分で、関連するボリュームも削除する必要がありました。それをしたら、私は仕事に戻りました。
Katie Byers

回答:


172

このdocker logsコマンドは、コンテナをインタラクティブに実行しない場合にコンテナが生成する出力を表示します。これには、エラーメッセージが含まれている可能性があります。

docker logs --tail 50 --follow --timestamps mediawiki_web_1

フォアグラウンドで新しいコンテナを実行して、docker run -ti <your_wiki_image>何が行われるかを確認することもできます。docker-composeymlからdockerコマンドにいくつかの設定をマッピングする必要があるかもしれません。

メディアウィキプロセスにアタッチするとクラッシュが発生し、データの一部が破損したと思います。


コンテナーに関連する最後の50ログを取得していると私が推測する、提供したコマンドの結果は次のとおりです:2016-05-26T16:38:27.362409489Z * Stopping web server apache2 * 2016-05-26T21:49:11.376549083Z Terminated 2016-05-26T21:49:11.688655642Z /bin/bash: /tmp/.runconfig.sh: No such file or directoryだから、そうです、runco​​nfig.shが消えたように見えるため、データが破損しています。あなたがアドバイスしたように、私はもう一度フォアグラウンドからコンテナを実行しようとします。25の適切な引数を指定する方法を見つけるだけです^^
Balessan '27

7
おかげで、新しいコンテナを実行することで問題は解決しました。Dockerは私の展開を容易にするはずでしたが、今のところそれは大きな失敗です:-)おそらく、もっと学び、試してみる必要があります...
Balessan

MySQLを動作させるために髪の毛を抜いていた。docker ps -aブートループでスタックしていることが示され、コマンドによって理由が表示されました。すでにmysqlディレクトリにあり、削除できないファイルです。あなたは私の髪を引っ張るより多くの時間から私を救った。ありがとう!
Blizzardengle

32

docker kill CONTAINER_ID機能せず、docker stop -t 1 CONTAINER_IDまた機能しない場合は、コンテナを削除してみてください。

docker container rm CONTAINER_ID

今日、コンテナーが継続的な再起動ループにあるという同様の問題がありました。

私の場合の問題は、私が下手なエンジニアであることと関係がありました。

とにかく、私はコンテナーを削除してコードを修正し、コンテナーを再構築して実行することで問題を修正しました。

これが将来この問題で立ち往生している人を助けることを願っています


4
私は自分のアプリケーションで、私は追加私のドッキングウィンドウのコンポーズファイルに不正なコードを入れていたrestart: always壊れたアプリを起動しようとするドッキングウィンドウのループの中で私を残し.. :(
Giannis Katsini

4

個人的な経験から、Dockerコンテナー内に再起動を許可していない問題があるようです。そのため、コンテナ内の一部のプロセスが再起動をハングさせているか、一部のプロセスがコンテナの起動時にクラッシュを引き起こしています。

コンテナーを開始するときに、アタッチする場合は、切り離された「-d」でコンテナーを開始してください。(例: "docker run -d mediawiki_web_1")


とにかく、docker-composeを使用してコンテナーを実行するとコンテナーが切り離されると思いますか?または、構成ファイルに-d引数がありません。それをチェックします。
バレッサン2016年

4

tl; drステータスコードで再起動しています127。つまり、コンテナにファイル/ライブラリがありません。新しいコンテナを開始するだけで問題が解決する可能性があります。

説明:

私のDockerの理解に関しては、これが起こっています。

  1. コンテナが起動しようとします。その過程で、存在しないファイル/ライブラリにアクセスしようとします。
  2. この回答で127説明されているステータスコードで終了します
  3. 通常、これはコンテナが完全に終了するはずの場所ですが、再起動します。
  4. コンテナーの起動時に再起動ポリシーnoデフォルト)以外に設定されている必要があるため(コマンドラインフラグ--restartまたはdocker-compose.ymlキーを使用して)、再起動しますrestart

解決策:何かがコンテナーを破損している可能性があります。理想的には、新しいコンテナを開始することで十分です。


2

これは、次のようなsystemdサービスを作成した場合にも当てはまります。

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container

1

私の場合、nginxコンテナが再起動を続けていたため、nginxコンテナのログを確認し、不要なドメインの.crtおよび.keyファイルにエラーがあることを知りました。そのため、それぞれの.confファイル、.crtおよび.keyを削除してから再起動しました。 nginx。それはそれを再起動することなくnginxが正常に動作していることです。


0

Minikubeをバックグラウンドで実行するのを忘れていたので、常にそれらを再起動しました。


0

まず、コンテナが失敗した理由をログで確認します。再起動ポリシーによってコンテナーが実行中の状態に戻る可能性があるためです。問題を修正する方が良いです。そうすれば、おそらく修正あり/なしの新しいイメージを構築できます。後で以下のコマンドを実行します

docker system prune

https://forums.docker.com/t/docker-registry-in-restarting-1-status-forever/12717/3


0

これらのパラメーターをdocker ymlファイルに追加してみてください

restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"

最終的なファイルは次のようになります

postgres:
  restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  image: postgres:latest
  volumes:
    - /data/postgresql:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.