この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できるように Dockerfile/docker-compose.yml を記述する方法について簡単に説明します。 Docker コンテナのライフサイクルは、コンテナ内の前のプロセスと関連しています。そのため、数秒実行しただけで自動的に終了するコンテナがいくつかあることがあります。コンテナ内に常駐する前のプロセスがないため、前のプロセスが終了するとコンテナは自動的に終了します。 例えば、docker hello-world # フラッシュでいろいろ出力 docker run --name hello-world hello-world # hello-worldコンテナが終了したことがわかります docker ps -a では、コンテナが自動的に終了するのを防ぐにはどうすればよいでしょうか? alpine/centos/ubuntu などの純粋なコンテナにログインしたい場合は、そのベースにいくつかのサービス コンポーネントをインストールし、それを独自のイメージにコミットします。 インターネット上には、コンテナの作成時に while(true) 無限ループ (もちろん sleep) を実行したり、tail -f /dev/null などを使用したりする方法が多数あります。いずれにせよ、目的は永続的なフロントエンド プロセスを開始することです。実際、docker コンテナの interactive および tty パラメータをよりエレガントに使用して、sh/bash (*nix システムに必須) コマンドを事前コマンドとして起動し、コンテナが自動的に終了しないようにすることができます。 たとえば、alpine イメージをベース イメージとして使用し、小さな alpine システム コンテナーを作成して永続的に実行できるようにし、ログインして特定のコマンドを対話的に実行できるようにします。 # alpine システムイメージを使用してコンテナを作成します # -i interactive=true で stdin を開きます # -t tty=true はセッションターミナルを割り当てます# -d デーモンモードは省略でき、コンテナに直接入ることができます。終了するには ctrl+p+q を押す必要があります# 終了できません。終了は sh セッションを終了するのと同じで、コンテナは終了しますdocker run -it -d --name alpine alpine sh # alpine は docker ps を実行している必要があります # コンテナにログイン docker exec -it alpine sh # apline はパッケージ管理として apk を使用します# 小さなトレインをインストールします# docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl を使用して新しいイメージ apk add sl を生成できます # コンテナを終了します。注: -d のみ使用できます。-d を使用して sh ターミナルを直接起動しないと、終了できません。そうしないと、コンテナも終了します。 コンテナの変更を送信して新しいイメージを生成する docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl Docker イメージ # アカウントをお持ちの場合は、docker hub に公開します: docker push big_cat/alpine_sl # 後でコンテナを停止/起動するときに -it パラメータを指定する必要はありません。docker stop alpine docker スタートアルパイン コンテナの変更を送信して新しいイメージを生成する docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl Docker イメージ # アカウントをお持ちの場合は、docker hub に公開します: docker push big_cat/alpine_sl 上記のコマンドは、コンテナが自動的に終了しないように、実際には sh/bash セッション ターミナルをフロント プロセスとして使用します。 コンテナを作成するときにこのように書くのは乱暴だと思うなら、それは問題ではありません。これをすべてdocker-composeにプッシュすることができます。 バージョン: '3' サービス: ビッグキャットアルパイン: コンテナ名: big_cat_alpine 画像: アルパイン stdin_open: true # -i インタラクティブ 端末: 真 # -t 端末 特権: true エントリポイント: ["sh"] # sh を実行する コンテナを作成してコンテナにログインする 実行ファイル: ドッカーps docker exec -it big_cat_alpine sh 2 つのパラメータを docker-compose に渡し、オーケストレーション後にサービス コンテナを起動します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MYSQL ログとバックアップおよび復元の問題の詳細な説明
テーブルが 2 つあり、テーブル A のレコードがテーブル B に存在しない可能性があります。左結合...
1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...
イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...
この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...
CSS プロパティのブラウザ互換性をまとめる必要があるのはなぜですか?使用する際は、Can I U...
目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....
目次1. コア1. Domノードを取得する2. ノードの更新2.1 実践演習3. Domノードを削除...
mybatis を学習しているときにエラーが発生しました。エラーの内容は次のとおりです。データベース...
目次1. PXCの紹介1.1 PXC の紹介1.2 PXC の特徴と利点1.3 PXCの限界と欠点1...
もしかしたら私の考え方が間違っていたのかもしれないし、問題の説明が少し乱雑だったのかもしれないが、こ...
日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...
序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...
カーソル選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した...
ページをナビゲートする2つの方法宣言型ナビゲーション: リンクをクリックしてナビゲーションを実現する...
ソースコードの例: https://codepen.io/shadeed/pen/03caf6b36...