Docker コンテナ (コンテナ) - 6

目次:

  1. コンテナとは何ですか?
  2. コンテナライフケース?
  3. なぜコンテナが必要なのでしょうか?
  4. コンテナのライフサイクル
    1. コンテナOOM
    2. コンテナが異常終了する
    3. コンテナが一時停止されました
  5. コンテナコマンド一覧
  6. コンテナコマンドの詳しい説明
    1. ドッカー作成
    2. ドッカーラン
    3. ドッカーps
    4. ドッカーログ
    5. ドッカーアタッチ
    6. ドッカー実行
    7. ドッカースタート
    8. ドッカーストップ
    9. ドッカーの再起動
    10. ドッカーキル
    11. ドッカートップ
    12. ドッカー統計
    13. dockerコンテナ検査
    14. ドッカーポート
    15. ドッカーCP
    16. ドッカーの差分
    17. ドッカーコミット
    18. ドッカー一時停止
    19. ドッカーの一時停止を解除する
    20. ドッカーrm
    21. ドッカーエクスポート
    22. ドッカー待機
    23. ドッカーの名前変更
    24. Dockerコンテナのプルーン
    25. ドッカーのアップデート
  7. コンテナ運用事例
    1. 基本的なコンテナ操作
    2. コンテナ状態の移行
    3. コンテナのバッチ処理のヒント
    4. コンテナインタラクションモード
      1. 付属モード
      2. 分離モード
      3. インタラクティブモード
    5. コンテナとホストのコンテンツのレプリケーション
    6. コンテナが自動的に削除されました
    7. コンテナが自動的に再起動します
    8. コンテナ環境変数の設定
    9. コンテナの詳細を表示する
    10. コンテナは単一行コマンドを実行します
    11. コンテナイメージのインポートとエクスポート
    12. コンテナログの表示
    13. コンテナリソースビュー
  8. 総合実戦 1.Mysqlコンテナ化インストール
  9. 総合実戦 2. Redisコンテナ化インストール
    1. Redisが登場した理由
    2. Redisとは何ですか
    3. Redis アプリケーションのシナリオ
    4. Redis のライフケース
    5. Redisコンテナの作成
  10. 総合実践3 C++コンテナ制作
    1. ソースは何ですか
    2. ミラーリングとは
    3. ミラーソース
    4. 中国科学技術大元
    5. C++コンテナを作成する
  11. 総合的な実践体験4. SpringBootコンテナ制作
  12. 総合実戦 5.コンテナリソースアップデート

1. コンテナとは何ですか?

平たく言えば、コンテナーはイメージの実行エンティティです。イメージは静的な読み取り専用ファイルですが、コンテナーには実行時に必要な書き込み可能なファイル層があり、コンテナー内のプロセスは実行状態にあります。つまり、コンテナーは実際のアプリケーション プロセスを実行します。コンテナには、初期作成、実行中、停止、一時停止、削除の 5 つの状態があります。コンテナの本質はホスト上で実行されるプロセスですが、コンテナには独自の独立した名前空間の分離とリソースの制限があります。つまり、コンテナー内では、ホスト上のプロセス、環境変数、ネットワークなどの情報は見ることができませんが、これがコンテナーとホスト上で直接実行されるプロセスの本質的な違いです。コンテナはイメージを基に作成された実行可能なインスタンスであり、独立して存在し、1つのイメージから複数のコンテナを作成できます。コンテナ化された環境を実行すると、このファイル システムの読み取り/書き込みコピーがコンテナ内に実際に作成されます。これにより、イメージのコピー全体を変更できるコンテナー レイヤーが追加されます。

2. コンテナの寿命のケース?

鏡やコンテナはデベロッパーが用意した粗末な家に相当するが、両家の装飾は全く異なる。あるいは、Java や C++ などのオブジェクト指向言語を学習したことがある方は、イメージが基本クラスで、コンテナがインスタンス化されたオブジェクトであると理解できますが、ユーザーが必要としない限り、内部のコンテンツは異なります。 。

3. なぜコンテナが必要なのでしょうか?

イメージは静的ファイルであり、Linux や Windows の CD と同様にサービスを提供できません。イメージがホストにインストールされて実行される場合にのみ、外部サービスを提供し、使用できるようになります。コンテナーはどのような利点をもたらしますか? 仮想化とコンテナー化が必要な理由については、以前の説明を参照してください。
 

4. コンテナのライフサイクル

コンテナのライフサイクルとは、コンテナが取り得る状態のことです。

  1. 1created:初期作成状態
  2. 実行中: 実行ステータス
  3. 停止: 停止状態
  4. 一時停止: 一時停止状態
  5. 削除済み: 削除済みステータス

各ライフサイクル間の変換関係を次の図に示します。

  • docker create: コンテナーを作成した後、すぐには実行が開始されず、コンテナーは初期構築状態に入ります。
  • docker run: コンテナーを作成し、すぐに実行を開始し、実行状態に入ります。
  • docker start: コンテナが実行状態に変わります。
  • docker stop: コンテナーは停止状態になります。
  • docker kill: コンテナが失敗(クラッシュ)した場合、kill(電源オフ)を実行すると、コンテナは停止状態になります。
  • この操作はデータを失いやすいため、必要な場合以外は使用しないことをお勧めします。
  • docker restart: コンテナを再起動すると、コンテナは実行状態になります。
  • docker stop: コンテナは一時停止状態になります。
  • docker unpause: 一時停止状態をキャンセルすると、コンテナーは実行状態になります。
  • docker rm: コンテナを削除すると、コンテナは削除済み状態になります。
  • メモリ不足により強制終了 (メモリ不足により終了): ホスト メモリが枯渇しました (OOM: 計画外の終了とも呼ばれます)。このとき、最も多くのメモリを消費しているコンテナを強制終了する必要があります。
  • コンテナ プロセスの終了 (異常終了): コンテナが終了すると、[再起動する必要がありますか?] 選択操作が開始されます。
    • はいを再起動する必要があり、コンテナーは start コマンドを実行して実行状態に入ります。
    • no の場合、再起動は必要ありません。コンテナは停止状態になります。​ 
コンテナOOM

Docker が OOM イベントを処理する場合、3 つの状況に分けられます。

  • OOM イベントは、コンテナー内のアプリケーションが、ホスト システムによってコンテナーに割り当てられたメモリ クォータを使い果たす場合にトリガーされます。たとえば、コンテナには Web サービスがデプロイされます。ホストによってこのコンテナに割り当てられたメモリの上限が 1G であると仮定します。スクリプトによって要求されたメモリが 1G を超えると、このコンテナは OOM イベントをトリガーします。この場合、コンテナは強制的に閉じられます。ただし、この時点でコンテナを閉じるのは Docker デーモンではなく、ホスト オペレーティング システムであることに注意してください。コンテナは実際にはホスト オペレーティング システムで実行されているプロセスのグループであるため、ホスト オペレーティング システムは cgroup を通じてこのプロセス グループのリソース制限を設定します。これらのプロセスによって要求されたリソースが上限に達すると、ホスト オペレーティング システムはカーネル OOM をトリガーしますしたがって、これらのプロセスを最終的にシャットダウンするのはホスト カーネルです。
  • ユーザーがコンテナを閉じたくない場合は、--oom-kill-disable を選択して OOM-Killer を無効にすることができます。このパラメータを使用するときは、まだ注意が必要です。-m を使用してこのコンテナのメモリの上限を設定すると、コンテナがメモリ リソースの上限に達したときに、ホストはコンテナをシャットダウンしませんが、は、このコンテナへのリソースの割り当てを継続しません。この時点で、コンテナはハング状態になります。最悪の事態を一定の範囲内に封じ込め、拡大を阻止できればよい。
  • ユーザーが --oom-kill-disable を使用するが、-m を使用して上限を設定しない場合、コンテナーは可能な限り多くのホスト メモリ リソースを使用します。言い換えれば、ホストは持っているだけのメモリを使用します。
コンテナが異常終了する

各コンテナー内には Init プロセスがあり、コンテナー内の他のすべてのプロセスはこのプロセスの子です。コンテナーが実行されているのは、Init プロセスが実行中であるためです。子プロセスが何らかの理由で終了すると、Init プロセスも終了するまで、その親プロセスも同期して終了します。 Init プロセスが終了すると、コンテナーが閉じられることになります。 Ocker には現時点で、この時点でのプロセスの終了が正常終了なのか異常終了なのかを知る方法がありません。コンテナーがシャットダウンされると、Docker デーモンはコンテナーを停止状態から実行状態に再度変更しようとします。 --restart パラメータが設定されたコンテナのみが Docker デーモンによって試行されます。それ以外の場合、コンテナは停止したままになります。

コンテナが一時停止されました

Docker はこのコンテナーの CPU リソースを「奪いました」。メモリ リソース、ネットワーク リソースなどの他のリソースはそのまま残ります。その結果、CPU リソースを失ったプロセスはホスト カーネル システムによってスケジュールされず、コンテナーは「フリーズ」状態になります。
 

5. コンテナコマンド一覧

6. コンテナコマンドの詳細説明

ドッカー作成

関数

新しいコンテナを作成しますが、起動はしません

文法

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

エイリアス

docker container create

キーパラメータ

  • -i: コンテナーを対話モードで実行します。通常は -t と一緒に使用します。
  • -P: ランダム ポート マッピング。コンテナの内部ポートがホストのポートにランダムにマッピングされます。
  • -p: ポート マッピングを指定します。形式は次のとおりです: ホスト (ホスト) ポート: コンテナー ポート
  • -t: 疑似入力ターミナルをコンテナに再割り当てします。通常は -i と一緒に使用されます。
  • --name="nginx-lb": コンテナーの名前を指定します。
  • -h "mars": コンテナーのホスト名を指定します。
  • -e username="ritchie": 環境変数を設定します。
  • --cpuset-cpus="0-2" または --cpuset-cpus="0,1,2": 実行する指定された CPU にコンテナをバインドします。
  • -m: コンテナーが使用する最大メモリを設定します。
  • --network="bridge": コンテナのネットワーク接続タイプを指定します。
  • --link=[]: 別のコンテナへのリンクを追加します。
  • --volume、-v: ボリュームをバインドします
  • --rm :shell は終了時にコンテナを自動的に削除します
  • --restart: 自動的に再起動します

サンプル

docker create --name mynginx nginx:latest
ドッカーラン

関数

新しいコンテナを作成してコマンドを実行する

文法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

エイリアス

docker container run

 キーパラメータ

  • -d: バックグラウンドでコンテナを実行し、コンテナ ID を返します。このパラメータは create だけではありません。
  • -i: コンテナーを対話モードで実行します。通常は -t と一緒に使用します。
  • -P: ランダム ポート マッピング。コンテナの内部ポートがホストのポートにランダムにマッピングされます。
  • -p: ポート マッピングを指定します。形式は次のとおりです: ホスト (ホスト) ポート: コンテナー ポート
  • -t: 疑似入力ターミナルをコンテナに再割り当てします。通常は -i と一緒に使用されます。
  • --name="nginx-lb": コンテナーの名前を指定します。
  • -h "mars": コンテナーのホスト名を指定します。
  • -e username="ritchie": 環境変数を設定します。
  • --cpuset-cpus="0-2" または --cpuset-cpus="0,1,2": 実行する指定された CPU にコンテナをバインドします。
  • -m: コンテナーが使用する最大メモリを設定します。
  • --network="bridge": コンテナのネットワーク接続タイプを指定します。
  • --link=[]: 別のコンテナへのリンクを追加します。
  • --volume、-v: ボリュームをバインドします
  • --rm :shell は終了時にコンテナを自動的に削除します
  • --restart: 自動的に再起動します
     

サンプル

ドッカーps

関数

コンテナをリストする

文法

docker ps [OPTIONS]

エイリアス

docker container ls, docker container list, docker container ps

キーパラメータ

  • -a: 実行されていないコンテナを含むすべてのコンテナを表示します。
  • -f: 表示内容を条件に基づいてフィルタリングします。
  • --format: 戻り値のテンプレートファイルを指定します。 jsonやテーブルなど
  • -l: 最新のコンテナを表示します。
  • -n: 最近作成された n 個のコンテナを一覧表示します。
  • --no-trunc: 出力を切り捨てません。
  • -q: サイレント モード。コンテナ番号のみが表示されます。
  • -s: 合計ファイルサイズを表示します。

サンプル

docker ps -a
ドッカーログ

関数

コンテナログの表示

文法

docker logs [OPTIONS] CONTAINER

エイリアス

docker container logs

キーパラメータ

-f,--follow: ログ出力を追跡する
--since: 特定の開始時刻にすべてのログを表示する
-t,--タイムスタンプ: タイムスタンプを表示します
-n、--tail: 最新の N 個のコンテナ ログのみをリストします

サンプル



ドッカーアタッチ

関数

実行中のコンテナに接続します。

文法

docker attach [OPTIONS] CONTAINER

エイリアス

docker container attach

キーパラメータ

--sig-proxy: すべてのシグナルをプロキシするかどうか。デフォルトは true です。false に設定すると、終了してもコンテナは影響を受けません。それ以外の場合は、終了するとコンテナも終了します。

サンプル


 

メッセージは次のように表示されます

  • コンテナID: コンテナID。
  • 画像: 使用された画像。
  • COMMAND: コンテナーの起動時に実行するコマンド。
  • CREATED: コンテナの作成時刻。
  • STATUS: コンテナのステータス。
  • ポート: コンテナーのポート情報と使用される接続タイプ (tcp\udp)。
  • NAMES: 自動的に割り当てられたコンテナ名。
ドッカー実行

関数

コンテナ内でコマンドを実行する

文法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

エイリアス

docker container exec

キーパラメータ

  • -d: 分離モード: バックグラウンドで実行
  • -i : アタッチされていない場合でも STDIN を開いたままにします
  • -t: 擬似端末を割り当てます。
  • -e: 環境変数を設定します
  • -u,--user: ユーザー「
  • -w,--workdir: 作業ディレクトリを指定します。

サンプル

#在容器 mynginx 中以交互模式执行 echo:
docker exec -it mynginx echo "Hello world"
#在容器 mynginx 中以交互模式打开 shell:
docker exec -it mynginx bash
#通过 id 进去, docker ps 可以看到容器 id
docker exec -it 5706674cc67e bash
ドッカースタート

関数

停止したコンテナを起動する

文法

docker start [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container start

サンプル

docker start mynginx

ドッカーストップ

関数

実行中のコンテナを停止する

文法

docker stop [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container stop

キーパラメータ

-s: 送信されたシグナル

サンプル

docker stop mynginx
ドッカーの再起動

関数

コンテナを再起動します

文法

docker restart [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container restart

キーパラメータ

 -s: シグナルを送信します

サンプル

docker restart mynginx
ドッカーキル

関数

コンテナを強制終了する

文法

docker kill [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container kill

キーパラメータ

-s: 送信されたシグナル

予防:

Docker stop は SIGTERM シグナルを送信し、docker kill は SIGKILL シグナルを送信します。

サンプル

docker kill mynginx
ドッカートップ

関数

コンテナー内で実行されているプロセス情報を表示し、ps コマンド パラメーターをサポートします。

文法

docker top CONTAINER [ps OPTIONS]

エイリアス

docker container top

予防

コンテナーの実行中に、top コマンドを対話的に実行する /bin/bash ターミナルが存在しない可能性があり、コンテナーに top コマンドがない可能性があります。docker top を使用して、コンテナー内で実行中のプロセスを表示できます。

サンプル

#查看容器进程信息
docker top mynginx
ドッカー統計

関数

CPU、メモリ、ネットワーク I/O などのコンテナ リソースの使用状況を表示します。

文法

docker stats [OPTIONS] [CONTAINER...]

エイリアス

docker container stats

キーパラメータ

  • --all、-a: 実行されていないコンテナを含むすべてのコンテナを表示します。
  • --format: 戻り値のテンプレートファイルを指定します。テーブル、JSONなど
  • --no-stream: 現在のステータスを表示して直接終了し、リアルタイムで更新されなくなります。
  • --no-trunc: 出力を切り捨てません。

返信メッセージ

  • コンテナ ID と名前: コンテナ ID と名前。
  • CPU % および MEM %: コンテナーによって使用される CPU とメモリの割合。
  • MEM USAGE / LIMIT: コンテナーによって使用されている合計メモリ量と、使用が許可されているメモリの合計量。
  • NET I/O: コンテナーがネットワーク インターフェイスを通じて送受信するデータの量。
  • ブロック I/O: コンテナーがホスト上のブロック デバイスから読み書きするデータの量。
  • PID: コンテナによって作成されたプロセスまたはスレッドの数。

サンプル




dockerコンテナ検査

関数

コンテナの詳細を表示する

文法

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

キーパラメータ

  • -f: 戻り値のテンプレートファイルを指定します。テーブル、JSONなど
  • -s: 合計ファイルサイズを表示します。

予防:

  • docker Inspection はイメージかコンテナかを自動的にチェックし、信頼情報を表示します。

サンプル

docker container inspect mynginx
ドッカーポート

関数

指定したコンテナのポート マッピングを一覧表示するため、または公開ポートへの PRIVATE_PORT NAT を検索するために使用されます。

文法

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

エイリアス

docker container port

サンプル

docker port mynginx
ドッカーCP

関数

コンテナとホストの間でファイルをコピーする

文法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

エイリアス

docker container cp

サンプル

#将主机/www/目录拷贝到容器 mynginx 的/www 目录下。
docker cp /www/ mynginx:/www/
#将容器/www/目录拷贝到主机的/wwwbak 目录下。
docker cp mynginx:/www/ /wwwbak/
ドッカーの差分

関数

コンテナ内のファイル構造に変更がないか確認します。

文法

docker diff CONTAINER

サンプル

docker diff mynginx

ドッカーコミット

関数

コンテナから新しいイメージを作成します。

文法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

パラメータ

  • -a: 送信された画像の作成者。
  • -c: Dockerfile 命令を使用してイメージを作成します。起動命令は変更できます。
  • -m: 送信時の説明テキスト。
  • -p: コミット時にコンテナを一時停止します。

サンプル

docker commit c3f279d17e0a maxhou/mynginx:v01

ドッカー一時停止

関数

コンテナ内のすべてのプロセスを一時停止します。

文法

docker pause CONTAINER [CONTAINER...]

エイリアス

docker container pause

サンプル

docker pause mynginx
ドッカーの一時停止を解除する

関数

コンテナ内のすべてのプロセスを復元します

文法

docker unpause CONTAINER [CONTAINER...]

エイリアス

docker container unpause

サンプル

docker unpause mynginx
ドッカーrm

関数

停止したコンテナを削除する

文法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container rm

キーパラメータ

-f: SIGKILL シグナルを通じて実行中のコンテナを強制的に削除します。

サンプル

#删除 mynginx 容器
docker stop mynginx
docker rm mynginx
#删除所有停止的容器
docker rm $(docker ps -a -q)
ドッカーエクスポート

関数

コンテナの内容を tar ファイルとしてエクスポートする

文法

docker export [OPTIONS] CONTAINER

エイリアス

docker container export

キーパラメータ

-o: ファイルに書き込みます。

サンプル

#导出 nginx 为 tar
docker export -o mynginx202203.tar mynginx
ドッカー待機

関数

コンテナーが停止するまで実行をブロックし、コンテナーの終了コードを出力します。

文法

docker wait CONTAINER [CONTAINER...]

エイリアス

docker container wait

サンプル

docker wait mynginx

ドッカーの名前変更

関数

重命名容器

文法

docker rename CONTAINER NEW_NAME

エイリアス

docker container rename

サンプル

docker rename mynginx myweb
Dockerコンテナのプルーン

関数

停止したコンテナをすべて削除します

文法

docker container prune [OPTIONS]

キーパラメータ

-f、--force: 確認のプロンプトを表示しません

サンプル

docker container prune
ドッカーのアップデート

関数

コンテナ構成の更新

文法

docker update [OPTIONS] CONTAINER [CONTAINER...]

エイリアス

docker container update

キーパラメータ

  • --cpus: CPU 番号
  • --cpuset-cpus : 使用する CPU
  • --memory :メモリ制限
  • --memory-swap: メモリをスワップします
  • --cpu-period: コンテナーによる CPU の使用を再割り当てする期間を指定するために使用されます。 
  • --cpu-quota: このサイクル中にこのコンテナーを実行するために使用できる最大時間を指定するために使用されます。

サンプル

#更新内存
docker update -m 400m myweb

7. コンテナ運用事例

基本的なコンテナ操作

nginxイメージファイルを使用してコンテナを作成する

コンテナのリスト (実行中のコンテナを含む)

 

現在実行中のコンテナを停止します

 

コンテナのリスト (実行中のコンテナと終了したコンテナを含む)

 

コンテナの削除

  

コンテナ状態の移行

まずコンテナを作成します

docker ps を通じて、コンテナーのステータスが作成されたことがわかります。

 

docker start でコンテナを起動します

コンテナが docker ps を通じて実行されていることがわかります。

 

コンテナはdocker stop経由で停止可能

 

コンテナを再度起動し、コンテナを強制終了します

 

コンテナを起動し、コンテナを一時停止します

 

コンテナを復元する

コンテナを再起動すると、コンテナの起動時間が短くなっていることがわかります。

 

コンテナーは docker rm を通じて削除できます

コンテナのバッチ処理のヒント

  • -a: 実行中のコンテナと終了したコンテナを含む、すべてのコンテナ情報を出力することを示します。
  • -q: コンテナ ID のみが返されることを示します
  • -f: 指定された条件に基づくフィルタリングを示します。--filter オプションと同等です。

 

 

注: バッチ処理を実行するときに、バッチ停止 dockercontainerstop $(dockercontainerps -aq) などの他のコマンドも比較できます。

コンテナインタラクションモード
付属モード

  • -p 80:80 はポート マッピングを表します。最初のポートはホストにマップされたポートを表し、2 番目のポートは Docker コンテナにマップされたポートを表します。これについては、ネットワークの章で詳細に説明します。
  • 上記の方法でコンテナを作成するとアタッチ モードになるため、コンテナはフォアグラウンドで実行されます。
  • サーバー URL にアクセスすると、コマンド ウィンドウはアクセスするたびにログを出力し、Docker コンテナーのログがウィンドウ内にリアルタイムで表示され、このポートを占有します。
  • Linux サーバーの場合、Ctrl+C を押すと Docker サービスが停止してしまうため、誤操作が発生しやすいため、デタッチ モードに相当する、より安定した優れたモードが必要です。
  • 接続モードは、コンテナーとプログラムのデバッグ段階にのみ適用されます。
  • 付属モードの使い方を練習してみよう
  • ステップ 1: アタッチ モードで実行中のコンテナを作成し、ホストのポート 80 にマップします。

 

  • ステップ 2: サーバーのポート 80 にアクセスし、ブラウザを使用してサーバー IP またはドメイン名にアクセスします。デフォルトではポート 80 にアクセスします。


 

ブラウザ上にnginxのホームページが表示されたことがわかります。アクセスを更新すると、いくつかの関連ログが標準出力に出力されることがわかります。

ステップ 3: Ctrl + C を入力します。


 

分離モード
  • -d または --detach オプションを docker コンテナー run -p 80:80 nginx コマンドに追加して、デタッチ モード、つまりバックグラウンドで実行することを示します。
  • バックグラウンドで実行され、起動後にコンテナIDのみが表示され、任意のコマンドを入力できます。
  • ウィンドウを閉じてもコンテナは実行され続けますが、コンテナの停止や削除にはシェルコマンドを使用する必要があるため、誤操作が大幅に軽減されます。
  • 代わりに接続モードを使用することをお勧めします。
  • デタッチモードの使い方を練習してみよう
  • ステップ 1: デタッチモードでコンテナを作成し、ポート 80 をマップする

  

  •  ステップ 2: ブラウザでサーバー URL にアクセスし、バックグラウンド ログを確認します。

 

  • ブラウザを更新すると、関連するログがバックグラウンドで印刷されていることがわかります。

 

動的追跡ログ: バックグラウンド ログ ウィンドウではログが 1 回だけ印刷されます。ログを動的に追跡したい場合は、-f
オプションを追加できます。ログ追跡モードをオフにしたい場合は、Ctrl+C を入力して終了します。

分離モードを接続モードに変換する

 

インタラクティブモード

コンテナーを作成した後、コンテナー内で情報を取得したりコマンドを実行したりする必要がある場合があり、対話モードに入る必要があります。たとえば、Ubuntu コンテナを作成した後、システムと対話するためにさまざまなシェル コマンドをシステムに入力する必要がある場合は、対話モードに入る必要があります。

実行中のコンテナを作成し、対話モードに入る

 -i: コンテナーを実行し続けます。通常、-t と一緒に使用されます。2 つのパラメータ it を追加すると、コンテナの作成後にコンテナが自動的にコンテナに入ります。コンテナを終了すると、コンテナは自動的に閉じられます。
-t: Reassign aコンテナへの疑似入力ターミナル。通常は -i
と一緒に使用され、すでに実行中のコンテナの対話モードに入る

対話モードを終了する: 対話シェルで exit と入力します。

  

コンテナとホストのコンテンツのレプリケーション

nginxサービスを開始します

 ホストマシン上でindex.htmlファイルをコンパイルします。

ホストファイルをコンテナにコピーする

表示するコンテナを入力してください

コンテナが自動的に削除されました

nginx を起動するには、--rm オプションを指定します。

コンテナを停止する

 

コンテナが存在するかどうかを再度確認すると、コンテナが自動的に削除されていることがわかります。

コンテナが自動的に再起動します

コンテナの再起動オプションは次のとおりです。

  • docker run --restart=no [コンテナ名]: デフォルト値は自動的に再起動しません。
  • docker run --restart=on-failure:3 [コンテナ名] : on-failure コンテナの終了ステータスが 0 でない場合、
  • Docker はコンテナを自動的に再起動しますが、再起動の回数を指定することもでき、指定した回数を超えてコンテナの起動に失敗すると、コンテナは諦めます。
  • docker run --restart=always [コンテナ名] :常に、コンテナの終了時にコンテナを再起動します。
  • docker run --restart=unless-stopped [コンテナ名] until-stopped コンテナは終了時に常に再起動されます。
  • ただし、Docker デーモンの起動時に停止したコンテナは考慮されません。
  • コンテナーの起動時に –restart パラメーターが設定されていない場合は、次のコマンドを使用して更新します。
  • docker update --restart=always [容器名]
     

nginx サービスを開始し、常に再起動するように指定します

 

nginx サービスに入り、kill してプロセスを開始します

プロセスのステータスをチェックして、プロセスがまだ起動ステータスにあるかどうかを確認します。

  

スペースを空ける

コンテナ環境変数の設定

nginx コンテナを起動し、環境変数を構成します (TEST=1)。

コンテナに入って環境変数を表示します


 

空きスペース

構成ファイルを使用して環境変数を構成します。

  

コンテナの詳細を表示する

コンテナの詳細情報を表示できます。たとえば、設定されているすべての環境変数を表示できます。

コンテナの起動

コンテナ情報の表示

 

リソースをリリースする 

コンテナは単一行コマンドを実行します

Docker コンテナ環境を直接使用して、いくつかのコマンドを実行できます。たとえば、特定のコマンドがコンテナにはあるがホストには存在しない場合、コンテナを使用して特定のタスクを完了できます。

コンテナイメージのインポートとエクスポート

ディレクトリを作成し、カスタムホームページを編集します

ホームページに以下の内容を入力してください

 

nginx イメージを実行し、docker cp を通じてホームページを変更します。

 

ホームページにアクセスすると、次のような内容が表示されます。

Docker エクスポートを通じてイメージを保存します

docker import を通じてイメージをインポートします

 

現在のコンテナを停止し、コンテナを再起動します

エクスポートされたイメージを使用して新しいコンテナを開始します

 

import を使用して、export によって生成されたファイルをインポートする場合、インポートではエラーは表示されませんが、コンテナーの起動時に失敗し、「docker: デーモンからのエラー応答: Container command not found or dos」のようなエラーが表示されます。存在しません」と表示されます。起動コマンドを指定する必要があります。エクスポートするとメタデータ情報が失われるためです。
 

コンテナログの表示

nginxを起動する

すべてのログを表示する

 

リアルタイムでログを表示する

 

アクセスしたページを数回更新する

 

リアルタイムでログを表示する

 

最新の 3 行のログを表示する

 

コンテナを停止してリソースを解放する

  

コンテナリソースビュー

nginxを実行しています

docker top を使用するとコンテナ内にどのプロセスがあるかを確認でき、aux を追加することで占有メモリと CPU の情報を確認できます。


 

Docker 統計を通じてリアルタイムのリソース使用量の変化を確認できます。

リソースをリリースする

 

8. 総合実戦 1. Mysqlコンテナ化インストール

mysql ミラー Web サイトに入り、mysql ミラーを見つけます。

タグがたくさんあるのがわかります

イメージをプルするために最もよく使用されるバージョン 5.7 を選択します。


 

msyql のデフォルトのポートは 3306 でパスワードがあることがわかっていますので、公式 Web サイトの起動ケースを確認してください docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag は mysql のパスワード情報を指定します

コンテナーのログインを入力すると、msyql に正常にログインできることがわかります。

 

ポート 8200 を外部に開き、ファイアウォールがない場合は、GUI ツールを介してインターフェイスにリモートでログインできます。 mysql ワークベンチを例として取り上げます。


 

スペースを空ける

 

9. 総合実戦 2. Redisコンテナ化インストール

Redisが登場した理由

Web アプリケーション開発の初期にリレーショナル データベースが広く注目され、応用されましたが、その理由は、当時の Web サイトは基本的にアクセス数や同時実行性が低く、インタラクションも少なかったためです。その後、訪問数が増加するにつれて、リレーショナル データベースを使用する Web サイトでパフォーマンスのボトルネックが発生し始めました。ボトルネックの原因は一般的にディスク I/O でした。インターネット技術のさらなる発展に伴い、さまざまな種類のアプリケーションが際限なく登場し、今日のクラウド コンピューティングとビッグ データの時代におけるパフォーマンスへの要求がさらに高まっています。これは主に次の側面に反映されています。

1. 低遅延の読み取りおよび書き込み速度: アプリケーションの迅速な応答により、ユーザーの満足度が大幅に向上します。
2. 大量のデータとトラフィックのサポート: 検索などの大規模なアプリケーションの場合は、ペタバイト規模のデータの使用と数百万のトラフィックを処理する能力

この問題を克服するために登場したのが、高いパフォーマンス、強力な拡張性、高可用性という利点を備え、幅広い開発者や倉庫管理者に支持されている NoSQL です。

Redisとは何ですか

Redis の正式名は Remote Dictionary Server、中国語名は Remote Dictionary Server です。

Redis は、現在最も人気のある NoSQL データベースの 1 つです。Redis は、ANSI C で書かれたオープン ソースで、さまざまなデータ構造を含み、ネットワーク、メモリベース、オプションの永続化キーと値のペアのストレージ データベースをサポートしています。これには
次の特徴があります:

メモリ操作に基づく、高性能
分散をサポート、理論的には無限の拡張
キー/値ストレージ システム
オープン ソースは ANSI C 言語で記述され、BSD プロトコルに準拠し、ネットワークをサポートし、メモリベースおよび永続的なログ タイプの Key-Value データベースを使用でき、複数の言語で API を提供します

Redis アプリケーションのシナリオ

ほぼすべての大手メーカーが Redis を使用しています。 RedisはString型、ハッシュ型、リスト型、コレクション型、シーケンシャルコレクション型などのさまざまなデータ型を提供しており、これらを利用することで、キャッシュシステム(ホットデータ:高頻度データ)など、さまざまなアプリケーションを容易に実装できます。読み取り、低頻度書き込み)、カウンター、メッセージ キュー システム、リアルタイム リーダーボード、ソーシャル ネットワーク。

Redis のライフケース

Redis は新華社の辞書のようなもので、特定の文字に基づいて辞書内の対応する単語をすばやく見つけることができます。

Redisコンテナの作成

Redis イメージをダウンロードする

Redisコンテナを起動する

 

 コンテナに入り、キーを設定します

ファイアウォールが有効になっている場合は、ビジュアル ツール、ビジュアル ツールのダウンロード アドレスを介して接続できます。
 AnotherRedisDesktopManager リリース バージョン - Gitee.com

 

リンクの設定

 

ビューキー

 

コンテナを出てスペースを空ける

 

10. 総合実践3 C++コンテナ制作

ソースは何ですか

ソースはソースです。
これは、ソフトウェアをインストールするときに、プログラムがソフトウェア パッケージを取得する場所です (インストール プログラムはマシン上にありますが、インストールする必要があるものはソフトウェア ソース サーバー上にあります)。
ソース、Ubuntu ではソフトウェア ライブラリに相当します。どのようなソフトウェアが必要ですか? 正しいソフトウェア名を覚えておくだけで、次のコマンドでインストールできます:
実際、これをソフトウェア ウェアハウスと呼ぶこともできます。ソフトウェアをインストールするときは、ウェアハウスからデータを取得してマシンに置きます。
 

sudo apt-get インストールソフトウェア名

例: gcc ソフトウェアをインストールしたい場合は、ターミナルに sudo apt-get install gcc と入力すると、gcc ソフトウェアのインストールに役立ちます。ソフトウェアがソースにない場合、このコマンドは完了できません。
 

ミラーリングとは

ミラーリングはファイル ストレージの形式であり、冗長性の一種です。あるディスク上のデータは別のディスク上に同一のコピーを持ちます。これがミラーです。
一般的なイメージ ファイル形式には、ISO、BIN、IMG、TAO、DAO、CIF、FCD などがあります。
いわゆるイメージ ファイルは、実際には ZIP 圧縮パッケージに似ています。ユーザーがダウンロードして使用しやすいように、特定の一連のファイルを特定の形式の 1 つのファイルにまとめます。オペレーティング システムのテスト バージョン、ゲームなど(オペレーティング システムをインストールしている人は、xxx.iso についてよく知っているはずです) イメージ ファイルには、ZIP 圧縮パッケージの「合成」機能があるだけでなく、その最大の特徴は、特定のソフトウェアで認識され、直接ファイルに書き込むことができることです。ディスク。

ミラーソース

ミラーソースは公式ソースのミラーを作成するもので、ここからソフトウェアをダウンロードできます。たとえば、Ubuntu の公式ソースが海外にある場合、ソフトウェアのダウンロードが非常に遅くなる可能性があり、この場合は国内のミラー ソースに切り替える必要があります。 ubuntuをベースにC++コンテナを作ります。出力を実行する際、HelloWorldは画像ソースをエージェントとして利用できます。例えば、車を買う場合、元々は自動車工場に行かなければなりませんでしたが、4Sストアを立ち上げてからは、自動車工場に行く代わりに、4S ストアに行くだけで済みます。

中国科学技術大元

https://mirrors.ustc.edu.cn/help/

C++コンテナを作成する

Ubuntu イメージをダウンロードする

コンテナの起動

 

国内の画像ソースアクセラレーションを構成する

 gcc vim をインストールする

コードを編集する

コードをコンパイルする

 

コンテナ内で実行

 

コンテナを終了する

 

この時点で、コンテナーが終了したことがわかります。再度入りたい場合は、docker restart を使用してコンテナーを復元できます。
 

コンテナをクリーンアップしてスペースを空ける

 

11. 総合的な実践経験 4. SpringBootコンテナの制作

デモを書く

Spring Boot を使用して簡単なデモを作成し、ブラウザーに hello docker! を出力します。

Maven プロジェクトを作成し、説明のために Spring Boot 2.x の最初のリリース バージョン 2.0.2.RELEASE を選択し、次のように pom.xml に spring-boot の依存関係を追加します。


 

Spring コンテナを構築する main 関数を作成する

 

コントローラーを書く

 

Maven パッケージを使用して jar パッケージを生成する

 

生成された jar パッケージは、プロジェクトのルート パスの下のターゲット ディレクトリに配置されます。

jar パッケージが利用可能かどうかをテストする

 

 コンテナーを起動した後、localhost:8080/hello にアクセスして実行結果を表示し、jar パッケージが利用可能であることを確認します。

バックアップのために Linux サーバーにアップロードする


 

コンテナを作る

Ubuntu イメージをダウンロードする


 

コンテナの起動

 国内の画像ソースアクセラレーションを構成する

JDKをインストールする

新しいシェル ウィンドウを開き、jar をコンテナーにコピーします。

 

 コンテナ内のファイルを表示する

Javaサービスを開始する


 

ブラウザ経由でページにアクセスし、ファイアウォールがオンになっていることを確認してください

 

ctrl+c はサービスを終了し、exit はコンテナを終了します

リソースをリリースする

12. 総合的な実戦 5. コンテナリソースのアップデート

nginxを実行しています

docker top を使用するとコンテナ内にどのプロセスがあるかを確認でき、aux を追加することで占有メモリと CPU の情報を確認できます。


 

docker stats を通じてリソースの動的な変化を確認できます。

 

docker update を通じて docker の最大メモリを更新します

 

docker stats を再度確認すると、メモリが 300m に制限されていることがわかります。

 

コンテナ内でコマンドを実行してCPUをいっぱいにします

for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`
do
dd if=/dev/zero of=/dev/null &
done
#说明:
#cat /proc/cpuinfo |grep “physical id” | wc -l 可以获得 CPU 的个数,
我们将其表示为 N
#seq 1 N 用来生成1到N之间的数字
#for i in seq 1 N; 就是循环执行命令,从1到N
#dd if=/dev/zero of=/dev/null 执行 dd 命令, 输出到/dev/null, 实际上
只占用 CPU, 没有 IO 操作
#由于连续执行N个(N是 CPU 个数)的 dd 命令, 且使用率为 100%, 这时调度器
会调度每个 dd 命令在不同的 CPU 上处理,最终就实现所有CPU占用率 100%

コマンド構成の実行では CPU の 10% しか使用できません

 

CPU が約 10% にしか達していないことがわかります。

 

 コンテナを停止してリソースを解放する

13. よくある質問

docker create、docker start、docker run の違いは何ですか?

docker create コマンドは、Docker イメージから新しいコンテナを作成します。ただし、すぐには実行されません。 docker start コマンドは、停止したコンテナーを起動します。 docker create コマンドを使用してコンテナーを作成した場合は、このコマンドを使用してコンテナーを起動できます。
docker run コマンドは、新しいコンテナを作成してすぐに開始するため、create と start を組み合わせたものです。実際、docker run コマンドがシステム上で上記のイメージを見つけられない場合は、Docker Hub からイメージをプルできます。
 

docker import と dockerload の違いは何ですか?

dockerloadコマンドとdockerimportコマンドの違いを理解するには、dockersaveコマンドとdockerexportコマンドについても知っておく必要があります。

  • docker image save_name: イメージをファイルとしてエクスポートし、 dockerload コマンドを使用してファイルをイメージとしてインポートします。イメージのすべての履歴レコードが保存されます。 docker exportコマンドでエクスポートしたファイルよりも容量が大きく、イメージの履歴がすべて保存されるのでわかりやすいです。
  • dockerexportcontainer_id:コンテナーをファイルとしてエクスポートし、dockerimportコマンドを使用してコンテナーを新しいイメージにインポートします。ただし、dockersaveコマンドと比較して、コンテナーファイルはすべてのメタデータと履歴を失い、現在のイメージのみを保存します。コンテナの状態。これは仮想マシンのスナップショットに適しています。 docker load コマンドを使用してイメージ ライブラリ ストレージ ファイルをローカル イメージ ライブラリにインポートすることも、docker import コマンドを使用してコンテナ スナップショットをローカル イメージ ライブラリにインポートすることもできます。
  • 2 つの違いは、コンテナ スナップショットはすべての履歴レコードとメタデータ情報を破棄するのに対し、イメージ ストレージ ファイルは完全なレコードを保存し、サイズが大きくなる点です。

docker rm と docker rmi と docker prune の違いは何ですか?

  • docker rm: 1 つ以上のコンテナを削除します
  • docker rmi: 1 つ以上のイメージを削除します
  • docker prune: 使用されなくなった docker オブジェクトを削除するために使用されます。


 

おすすめ

転載: blog.csdn.net/qq_56444564/article/details/134774632