目次
2.2.6 dockerfile docker イメージ ファイルをビルドする
1. クラウドネイティブの概念
1.1 クラウドネイティブの定義
「クラウド ネイティブ」とは、その名の通り「クラウド上で生まれ、クラウド上で成長する」という意味で、
クラウド コンピューティング技術を基盤とし、コンテナ、マイクロサービス、DevOps、自動化などの技術を利用してアジャイルな開発と迅速な導入を実現するアプリケーション プログラムです。 、これはクラウド ネイティブです。
クラウド ネイティブは「クラウド」用に設計されたアプリケーションであるため、このテクノロジーは部分的に、従来のクラウド コンピューティング、サービスとしてのインフラストラクチャ (IaaS)、サービスとしてのプラットフォーム (PaaS)、およびソフトウェアの 3 層の概念に依存しています。サービスとして (SaaS)。
1.2 クラウドネイティブ要素
クラウド ネイティブ要素は次のとおりです。
1.2.1 マイクロサービス
「マイクロサービスは、私たちがソフトウェア開発で追求してきた低結合 + 高凝集性を解決します。私たちのシステムのインターフェースに問題があり、ユーザーのフロントエンド操作に影響を与えたのを覚えています。なぜこの 2 つが相互に影響を与えるのでしょうか?!」
マイクロサービスはこの問題を解決できます。マイクロサービスの本質は、大きなパイを結合度の低いいくつかの小さなパイに分割することです。たとえば、1 つの小さなパイは外部データの受信を担当し、1 つの小さなパイはフロントエンド操作への応答を担当します小さなパイはさらに分割できます。たとえば、外部データの受信を担当するパイを、異なる種類のデータの受信を担当する複数のパイに分割し続けることができるため、各パイに問題がある場合でも、他のパイがサービスを提供できます。外の世界へ。
1.2.2 DevOps
DevOps とは、開発と運用および保守がもはや 2 つの別個のチームではなく、あなたの中に私がいて、私の中にあなたがいるという 1 つのチームであることを意味します。現在、私たちは開発と運用保守のチームとなっていますが、運用保守の知識と経験はまだまだ向上し続ける必要があります。
1.2.3 継続的デリバリー
継続的デリバリーとは、ユーザーのサービス利用に影響を与えることなく、新しい機能が頻繁にユーザーにリリースされることを意味しますが、これを行うことは非常に困難です。現在、バージョンは 2 週間ごとに提供されており、オンラインになるたびに、さまざまなユーザーにさまざまな程度の影響を与えることになります。
1.2.4 コンテナ化
コンテナ化のメリットは、運用・保守時に各サービスが使用する技術スタックを意識する必要がなくなり、各サービスが区別なくコンテナにカプセル化され、区別なく管理・保守できることです。人気のツール docker と k8s です。
したがって、クラウド ネイティブを次のように単純に理解することもできます: クラウド ネイティブ = マイクロサービス + DevOps + 継続的デリバリー + コンテナ化
2. ドッカー
2.1 Dockerの概要
2.1.1 Dockerの定義
Docker は、Go 言語に基づいたオープン ソースのアプリケーション コンテナ エンジンであり、Apache2.0 プロトコルに準拠したオープン ソースです。Docker を使用すると、開発者はアプリケーションと依存関係を軽量でポータブルなコンテナにパッケージ化して、一般的な Linux マシンに配布したり、仮想化したりできます。コンテナーは完全にサンドボックス メカニズムを使用しており、コンテナー間にインターフェイスは存在しません。さらに重要なのは、コンテナーのパフォーマンスのオーバーヘッドが非常に低いことです。
2.1.2 Docker アプリケーションのシナリオ
-
Web アプリケーションの自動パッケージ化と公開。
-
自動テストと継続的統合、リリース。
-
サービス指向環境でデータベースまたはその他のバックエンド アプリケーションを展開および調整します。
- ソフトウェアの国境を越えた移行の問題を解決する
2.1.3 Docker アーキテクチャ
鏡像
Docker イメージ (イメージ) は読み取り専用のテンプレートです。イメージを使用して Docker コンテナーを作成でき、1 つのイメージで多数のコンテナーを作成できます。
容器
Docker はコンテナを使用して、1 つまたは複数のアプリケーションを独立して実行します。コンテナーは、イメージを使用して作成された実行中のインスタンスです。開始、開始、停止、削除が可能です。各コンテナーは、分離された安全なプラットフォームであり、コンテナーは、Linux 環境とそこで実行されるアプリケーションの簡略化されたバージョンです。
倉庫(リポジトリ)
ウェアハウス (リポジトリ) は、画像ファイルを一元的に保管する場所です。リポジトリ (リポジトリ) とウェアハウス登録サーバー (レジストリ) には違いがあります。倉庫登録サーバーには複数の倉庫が保存されていることが多く、各倉庫には複数の画像が含まれており、各画像には異なるタグ(タグ)が付いています。倉庫は公共倉庫(Public)と民間倉庫(Private)に分かれます。最大のパブリック ウェアハウスは Docker Hub (https://hub.docker.com/) で、ユーザーがダウンロードできる多数のイメージが保存されています。国内の公共倉庫には、Alibaba Cloud、NetEase Cloudなどが含まれます。
2.2 Docker コマンド
2.2.1 Dockerプロセス関連コマンド
#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#查看docker状态
systemctl status docker
#重启docker
systemctl restart docker
#设置开机启动
systemctl enable docker
2.2.2 Dockerイメージ関連のコマンド
#查看镜像,查看本地所有的镜像
docker images
docker images
-q #查询所有镜像的ID
-a #列出所有的镜像
--help #命令帮助
#查询如下
#镜像的仓库源, 镜像的标签,镜像的id, 镜像的创建时间, 镜像的大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 14 months ago 13.3kB
#搜索镜像:从网络中查询需要的镜像
docker search 镜像的名称
#拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号, 如果不指定,则是最新版,如果不知道镜像的版本号,可以去hub.docker.com去查询
docker pull 镜像名称
#删除指定镜像
docker rmi 镜像id
2.2.3 Dockerコンテナ関連のコマンド
docker run パラメーターのイメージ名: バージョン番号 パラメーターの説明: * -i: コンテナーを実行し続けます。通常は -t と一緒に使用されます。2 つのパラメーターを追加すると、コンテナーは作成後に自動的にコンテナーに入り、コンテナーはコンテナーの終了後に自動的にシャットダウンします。 * -d: デーモン (バックグラウンド) モードでコンテナーを実行し、バックグラウンドで実行するコンテナーを作成します。コンテナーに入るには docker exec を使用する必要があります。終了後、コンテナーはシャットダウンされません。下。 * --name: 作成したコンテナの名前 * -p host port: コンテナのポート
#查看正在运行容器
docker ps
#查看所有容器
docker ps -a
#创建并启动容器
docker run -d --name nginx1 -p 4200:80 nginx
#进入容器
docker exec -it ngnix1 /bin/bash
#停止容器
docker stop 容器名称或者容器id
#启动容器
docker start 容器名称或者容器id
#删除容器:如果是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称或者容器id
#查看容器信息
docker inspect 同期名称或者容器id
2.2.4 ログ処理
#查看最近日志
docker logs -f 容器名/容器ID
#最近30分钟的日志
docker logs
#查看某时间之后的日志
docker logs -t --since="2022-08-08T18:08:08" 容器ID
#查看某时间段日志
docker logs -t --since="2022-08-08T18:08:08" --until "2022-08-08T20:08:08" 容器ID
2.2.5 データボリュームコンテナ
ボリュームは、1 つ以上のコンテナーに存在するディレクトリまたはファイルであり、docker によってコンテナーにマウントされますが、共同ファイル システムには属さないため、ユニオン ファイル システムをバイパスして、永続ストレージまたは共有のためのいくつかの機能を提供できます。設計の目的はデータの永続化であり、コンテナのライフサイクルとは完全に独立しているため、コンテナが削除されても Docker がマウントしているデータ ボリュームを削除しません。データ ボリュームはコンテナ間でデータを共有または再利用でき、ボリュームの変更はリアルタイムで直接反映され、データ ボリュームのライフ サイクルは、コンテナがそれを使用しなくなるまで継続します。
データボリュームの構成
docker run ... -v ホスト ディレクトリ (ファイル): コンテナ ディレクトリ (ファイル)...
予防
- ディレクトリは絶対パスである必要があります
- ディレクトリが存在しない場合は自動的に作成されます
- 複数のデータボリュームに接続可能
#mysql 同步数据
docker run -d -p 3310:3306 -v /www/server/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.5
2.2.6 dockerfile docker イメージ ファイルをビルドする
-
Dockerfileはテキストファイルです
-
一連の指示が含まれています
-
各命令はベースイメージに基づいてレイヤーを構築し、最後に新しいイメージを構築します。
-
開発者向け: 開発チームに完全に一貫した開発環境を提供できます。
-
テスター向け: 開発中にビルドされたイメージを直接ビルドすることも、Dockerfile ファイルを通じて新しいイメージをビルドして作業を開始することもできます。
-
運用および保守担当者向け: 導入中にアプリケーションのシームレスな移行を実現できます。
以下に示すように 独自のcentos イメージを構築します。
dockerfileを実行してイメージを生成する
docker build -f dockerfile ファイルのパス -t 新しいイメージの名前とバージョン番号を設定します # 最後の点は生成されたイメージのパスを表すことに注意してください -f は dockerfile のパスを表します -t 新しいイメージの名前と バージョン
番号
デバイスのイメージ
最後の . はイメージを生成するパスが現在のパスであることを意味します
2.2.7 Docker Compose
Dockerを利用する場合、Dockerfileを定義し、docker buildやdocker runなどのコマンドを使用してコンテナを操作します。しかし、マイクロサービスアーキテクチャのアプリケーションシステムは一般に複数のマイクロサービスで構成され、各マイクロサービスは複数のインスタンスを展開することが多く、各マイクロサービスを手動で起動・停止する必要があると効率が悪く、メンテナンス量も多くなります。
Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。Compose を使用すると、YML ファイルを使用してアプリケーションに必要なすべてのサービスを構成できます。その後、1 つのコマンドで、YML ファイル構成からすべてのサービスを作成および開始できます。
Compose で使用される 3 つのステップ:
- Dockerfile を使用してアプリケーションの環境を定義します。
- docker-compose.yml を使用してアプリケーションを構成するサービスを定義し、それらが分離して一緒に実行できるようにします。
- 最後に、 docker-compose up コマンドを実行して、アプリケーション全体を起動して実行します。
Docker Compose の導入には膨大なスペースが必要なため、著者は Docker Compose について別の記事を書く予定ですが、ここでは簡単に紹介します。