Docker は、開発と展開に広く使用されている人気のあるコンテナ化プラットフォームです。ただし、Docker コンテナーを使用するときに起動エラーが発生する場合があります。この記事では、いくつかの一般的な問題を調査し、解決策を提供します。
まず、コンテナのステータスを確認する必要があります。実行中のコンテナと実行されていないコンテナを含むすべてのコンテナのステータスを表示するには、コマンド docker ps -a
を使用します。コンテナーのステータスが Exited
の場合、コンテナーが実行を停止したことを意味します。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a9506b91d24 nginx "nginx -g 'daemon of…" 2 hours ago Exited (1) 2 hours ago nginx-container
コンテナの起動に失敗した場合は、コンテナのログを確認することでより詳細な情報を取得できます。コマンド docker logs CONTAINER_NAME/ID
を使用して、コンテナーのログ出力を表示します。この時点でコンテナーがシャットダウンされている場合は、パラメーター -f
を使用してログの表示を続行できます。
$ docker logs nginx-container 2021/08/23 08:08:09 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use) ...
上記の nginx-container
を例にとると、エラー メッセージは bind() to 0.0.0.0:80 failed (98: Address selected in use)
は、ポート 80 がすでに占有されているため、コンテナーを起動できないことを示します。
前のエラー メッセージではポート占有の問題について言及しているため、コンテナのポート マッピングが正しいかどうかを確認する必要があります。コマンド docker port CONTAINER_NAME/ID
を使用して、コンテナーのポート マッピングを表示します。
$ docker port nginx-container 80/tcp -> 0.0.0.0:8080
上記の出力は、コンテナのポート 80 がホストのポート 8080 にマッピングされていることを示しているため、ホストのポート 8080 が占有されているかどうかを確認する必要があります。
内部サービスが正常に起動できないため、コンテナの起動に失敗する場合があります。たとえば、データベース コンテナーの接続の失敗、アプリケーション自体の構成の問題などです。この場合、コンテナー内に移動し、サービスを手動で実行して出力を確認する必要があります。
コマンド docker exec -it CONTAINER_NAME/ID bash
を使用して、コンテナーに入ります。
$ docker exec -it nginx-container bash
コンテナ内で、確認する必要があるサービスを実行し、出力情報を確認します。
コンテナーを起動できず、上記の方法のいずれも解決しない場合は、コンテナーの再構築を試みることができます。まず、元のコンテナを停止して削除する必要があります。
$ docker stop nginx-container $ docker rm nginx-container
次に、イメージを再構築し、コンテナーを実行します。
$ docker build -t my-nginx . $ docker run -d --name nginx-container -p 8080:80 my-nginx
上記は、Docker コンテナの起動に失敗する一般的な理由と解決策の一部です。もちろん、より複雑な理由は他にもあります。また、起動時に注意する必要がある詳細や構成オプションも多数あります。 Dockerコンテナを使用します。読者がコンテナ開発の基本スキルを習得できることを願っています。
以上がDockerコンテナが起動できない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。