質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

1270閲覧

エラー起こしたまま終了したコンテナってもう起動できないですか?

tkshp

総合スコア174

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/03/05 08:10

前提・実現したいこと

nignxのコンテナで設定ファイルにエラーがある状態で、nginxのサービスを終了したら、それがプロセス1だったので、
コンテナが終了してしまいました。
コンテナを起動しようと思い、docker startしたら、起動して2秒後くらいで終了してしまいます。
もうこのコンテナは起動できないのでしょうか?

発生している問題・エラーメッセージ

docker start -i コンテナ

コンテナ内のエラーメッセージが出力されて、すぐに終了する。

試したこと

docker start -i docker start -a

補足情報(FW/ツールのバージョンなど)

Docker Toolbox

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bassbone

2018/03/05 11:02 編集

参考までに確認ですが、なぜエラーになったコンテナをそのまま起動したいのでしょうか? 設定ファイルが原因でコンテナが起動しないのであれば、設定ファイルを修正して再度コンテナをビルドし起動ではないかと。
tkshp

2018/03/06 02:23

設定ファイルはコンテナの中ですね。コンテナを起動しないと設定ファイルを編集できません。
t_obara

2018/03/06 02:35

そもそも起動前の設定ファイルはどのように編集したのでしょうか?
tkshp

2018/03/06 02:52

起動中に設定ファイルを編集しました。そこでエラーが起きていたのですが、誤ってnginxのサービスを停止してしまい、コンテナを終了させてしまいました。
guest

回答1

0

dockerでは、通常環境の再構築を手軽にに行うために利用するのですが、コンテナ内にあるファイルを修正した場合にそのようなメリットが享受できません。
あらかじめ編集した設定ファイルを利用してdockerイメージをビルドし、それを利用してインスタンスを起動したり、すでにビルドされたイメージをダウンロードして利用することになります。

さて、今回の場合、単に終了したコンテナ内にあるファイルを取り出せれば、とりあえずの解決ができると考えたので、その方法をご提示させていただきます。

$docker ps -a

コマンドで、終了したコンテナのインスタンスID(コンテナID、今回CIDとしておきます)を取得します。
そして、以下のコマンドを叩いて、ファイルパスを表示(仮に、/foo/bar/filename.conf とします。)

$docker diff CID

そのファイルをホスト側のカレントディレクトリにコピーします。

$docker cp CID:/foo/bar/filename.conf .

これで、filename.conf というファイルがカレントディレクトリに生成できます。
このファイルを利用して、新たにイメージを作るでも良いし、新規に生成したインスタンスにコピーしても良いでしょう。

投稿2018/03/06 03:11

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問