docker がコンテナから出ない
Docker コンテナを終了せずに実行し続けるには、さまざまな方法があります。この記事では、一般的に使用されるいくつかの方法とその長所と短所について説明します。
方法 1: --restart オプションを使用する
Docker には、コンテナが異常終了したときにコンテナを自動的に再起動できるオプション --restart
が用意されています。オプションの値には no
、on-failure
、always
という 3 つの値があり、それぞれ再起動なし、異常終了時に再起動、常に再起動に対応します。具体例:
docker run --restart=always IMAGE_NAME
--restart
オプションを使用する利点は、コマンド ラインにオプションを追加するだけで済むため、シンプルで使いやすいことです。ただし、コンテナーでエラーが発生した場合、コンテナーが手動で停止されるまで再起動が続きます。これにより、コードが不安定になり、データ損失が発生する可能性があります。
方法 2: Docker Compose を使用する
Docker Compose は、複数の Docker コンテナーを定義して実行できるツールです。コンテナと起動パラメータの関係をymlファイルで記述できます。次の構成を docker-compose.yml
ファイルに追加します:
version: '3' services: app: build: . restart: always
その後、docker-compose
コマンドを使用してコンテナーを起動できます:
docker-compose up -d
restart: always
オプションは、コンテナーが異常終了したときにコンテナーを自動的に再起動するように Docker に指示します。この方法の利点は、複数のコンテナを管理できることであり、便利で高速ですが、コンテナが常に再起動されるという問題がまだあります。
方法 3: デーモン プロセスを使用する
デーモン プロセスを使用することは、Docker コンテナーが終了しないようにするための信頼できる方法です。コンテナ内でデーモンを起動し、デーモンの監視下で Docker コンテナを実行します。コンテナに問題がある場合、デーモンはコンテナを再起動します。
次の例は、supervisor
デーモンを使用して Node.js サービスを開始する例です:
- スーパーバイザーのインストール:
npm install -g supervisor
supervisord.conf
ファイルを作成し、次の内容を追加します:
[supervisord] nodaemon=true [program:app] command=supervisor app.js directory=/app autostart=true autorestart=true user=root
- Dockerfile に次の構成を追加します:
RUN apt-get update && apt-get install -y supervisor COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ミラーを生成してコンテナを起動します:
docker build -t IMAGE_NAME . docker run -d IMAGE_NAME
デーモンを使用する利点は、コンテナの動作を柔軟に制御できることですが、追加の構成作業が必要であり、デーモンは、一部のシステム リソースを消費します。
方法 4: 外部監視を使用する
外部監視システムを使用して Docker コンテナを監視し、例外が発生した場合にコンテナを再起動すると、コンテナの動作をより柔軟に制御できます。コンテナに異常がある場合、監視システムはアラームの発行、ログの記録、コンテナの再起動などのアクションを実行できます。
たとえば、systemd
を使用して Docker コンテナを監視できます。
- systemd ユニット ファイル (
mydocker.service
など) を作成します。 、ファイルの内容は次のとおりです。
[Unit] Description=My Docker Container [Service] ExecStart=/usr/bin/docker start -a myapp Restart=always RestartSec=10s ExecStop=/usr/bin/docker stop -t 2 myapp [Install] WantedBy=default.target
このファイルは、myapp
という名前のコンテナーを定義します。コンテナーに問題が発生すると、systemd
がコンテナーを自動的に再起動します。このサービスを有効にするには、systemctl
コマンドを使用します。
sudo systemctl daemon-reload sudo systemctl enable mydocker.service sudo systemctl start mydocker.service
外部監視を使用する利点は、より柔軟でさまざまなサードパーティ監視システムを使用できることですが、追加の構成と設定が必要です。保守作業。
一般に、Docker コンテナを長期間実行し続ける方法は数多くありますが、それぞれに独自の長所と短所があります。具体的な選択は実際のニーズに基づいて行う必要があります。コンテナーを起動するときは、コンテナーの操作の安定性とセキュリティも考慮し、適切な自動化ツールを使用して手動操作を減らす必要があります。
以上がdocker がコンテナから出ないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Dockerは、DevOpsエンジニアにとって必須のスキルです。 1.Dockerは、アプリケーションとその依存関係をコンテナにパッケージ化することにより、分離と移植性を実現するオープンソースのコンテナ化されたプラットフォームです。 2. Dockerは、名前空間、コントロールグループ、フェデレーションファイルシステムで動作します。 3。基本的な使用には、コンテナの作成、実行、管理が含まれます。 4.高度な使用法には、DockerComposeを使用してマルチコンテナーアプリケーションを管理することが含まれます。 5.一般的なエラーには、コンテナ障害、ポートマッピングの問題、データの持続性の問題が含まれます。デバッグスキルには、ログの表示、コンテナの入り、および詳細情報の表示が含まれます。 6.パフォーマンスの最適化とベストプラクティスには、画像の最適化、リソースの制約、ネットワーク最適化、DockerFileを使用するためのベストプラクティスが含まれます。

Dockerセキュリティの強化方法は次のとおりです。1。-cap-dropパラメーターを使用してLinux機能を制限します。2。読み取り専用コンテナを作成します。これらの戦略は、脆弱性の露出を減らし、攻撃者の機能を制限することにより、コンテナを保護します。

Dockervolumeは、コンテナを再起動、削除、または移行すると、データが安全であることが保証されます。 1。ボリュームの作成:Dockervolumecreatemydata。 2。コンテナとマウントボリュームを実行します:Dockerrun-It-Vmydata:/app/dataubuntubash。 3.高度な使用には、データ共有とバックアップが含まれます。

LinuxでDockerを使用すると、開発と展開の効率が向上する可能性があります。 1。Dockerのインストール:スクリプトを使用して、ubuntuにDockerをインストールします。 2.インストールの確認:sudodockerrunhello-worldを実行します。 3。基本的な使用法:NginxコンテナDockerrun-Namemy-Nginx-P8080を作成します:80-Dnginx。 4。高度な使用法:カスタム画像を作成し、DockerFileを使用してビルドして実行します。 5。最適化とベストプラクティス:マルチステージビルドとドッケルコンポスを使用して、DockerFilesを作成するためのベストプラクティスに従ってください。

Dockerは、ブリッジネットワーク、ホストネットワーク、オーバーレイネットワークの3つのメインネットワークモードを提供します。 1.ブリッジネットワークは、単一のホストでのコンテナー間通信に適しており、仮想ブリッジを介して実装されています。 2。ホストネットワークは、高性能ネットワークが必要なシナリオに適しており、コンテナはホストのネットワークスタックを直接使用します。 3.オーバーレイネットワークは、マルチホストDockerswarmクラスターに適しており、仮想ネットワークレイヤーを介してクロスホスト通信が実現されます。

DockerSwarmは、スケーラブルで非常に利用可能なコンテナクラスターを構築するために使用できます。 1)dockerswarminitを使用して群れクラスターを初期化します。 2)swarmクラスターに参加して、dockerswarmjoinを使用します。 3)DockerServiceCreate-Namemy-Nginxを使用してサービスを作成します - Replicas3nginx。 4)dockerstackdeploy-cdocker-compose.ymlmyAppを使用して複雑なサービスを展開します。

Docker監視の中核は、主にCPUの使用、メモリ使用、ネットワークトラフィック、ディスクI/Oなどのインジケーターを含む、コンテナの動作データを収集および分析することです。 Prometheus、Grafana、Cadvisorなどのツールを使用することにより、コンテナの包括的な監視とパフォーマンスの最適化を実現できます。

効率的で最適化されたDocker画像を作成する方法は? 1.公式画像や高山画など、適切な基本画像を選択します。 2。指示の順序を合理的に配置し、Dockerキャッシュメカニズムを使用します。 3.マルチステージ構造を使用して、画像サイズを縮小します。 4.ミラー層の数を最小限に抑え、実行命令をマージします。 5.不要なファイルスペースを避けるために、一時的なファイルをクリーンアップします。
