1. Dockerの紹介 Docker は Linux オペレーティングシステムの一部の機能をベースに Go 言語で開発されており、オペレーティングシステムレベルの抽象化を提供し、アプリケーションのインフラストラクチャ (オペレーティングシステムなど) への依存を分離するコンテナ管理テクノロジです。仮想マシンと比較して、Docker はホストマシンのハードウェア リソースを共有し、コンテナーを使用してアプリケーションを実行するための独立したオペレーティング環境を提供します。仮想マシンは、仮想化テクノロジーを使用して分離された仮想マシンを提供し、仮想マシンのオペレーティング システム上で実行環境を提供する Supervisor (仮想マシン ハイパーバイザー) に基づいています。どちらも優れたリソース分離を提供しますが、Docker の方が仮想化のオーバーヘッドが低いことは明らかです。 Docker には、レジスター、イメージ、コンテナという 3 つのコア概念が含まれます。 1. レジストリ: 倉庫。 Docker イメージを保存するために使用されます。たとえば、Docker の公式 Docker Hub は、必要なイメージをダウンロードできるパブリック ウェアハウスです。 2. 画像:画像。開発者はアプリケーションまたはサービスを作成し、それとその依存関係をコンテナ イメージにパッケージ化します。イメージは、アプリケーションの構成とその依存関係の静的な表現です。 3. コンテナ:コンテナ。コンテナは、イメージの実行インスタンスです。これは、オペレーティング システム、実行するプログラム、実行中のプログラムの依存関係、環境変数などが含まれる、分離された、リソース制御されたポータブルなランタイム環境です。 3 つの間の相互作用は次のとおりです。 Docker pull または Docker run コマンドを実行すると、必要なイメージがローカルにない場合は、リポジトリ (通常は DockerHub) からイメージがダウンロード (プル) されます。 Docker は run メソッドを実行してコンテナを取得し、ユーザーはコンテナ内でさまざまな操作を実行します。 Docker は、コンテナをイメージに変換するために commit メソッドを実行します。 Docker は login や push などのコマンドを使用して、ローカル イメージをウェアハウスにプッシュします。イメージは他のマシンやサーバー上でコンテナを生成し、対応するアプリケーションを実行するために使用できます。 2. Dockerのインストール 1. yumソースを使用してインストールします。公式ソースは中国ではアクセスが遅いため、ここにAlibabaのソースを追加します > wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > yum インストール -y docker-ce 2. Dockerを起動する //Docker CEを起動する > systemctl で docker を起動します > systemctl で docker を有効にする //Docker のステータスを確認する> systemctl status docker // dockerのバージョンを確認する> docker -v 3. Docker が正しくインストールされているかどうかをテストし、次のコマンドを実行します。 a. b. c. コンテナは Linux オペレーティング システムの簡易版です。イメージはこのコンテナにロードされるソフトウェアです。このコマンドを実行すると、Engine は次の処理を実行します。 1. hello-worldソフトウェアイメージが存在するかどうかを確認する 2. Docker Hub からイメージをダウンロードします (Docker Hub については後ほど詳しく説明します) 3. このイメージをコンテナにロードして実行する 3. Dockerで.Netcoreプロジェクトを実行する 1. microsoft/dotnet イメージをプルし、インストールが完了するまで数分間待ちます。docker 2. microsoft/dotnet イメージを実行します。docker > docker run -it microsoft/dotnet //dotnet イメージを起動します> dotnet new mvc -n mvctest //mvctest という名前の .NET Core MVC プロジェクトを作成します> cd mvctest //mvctest フォルダーに移動します> dotnet run //.NET Core MVC プロジェクトを起動します 実行結果は下の図に示されています。 アプリケーションを終了するにはキーボードのCtrl+Cを押し、現在のコンテナを終了するにはexitと入力します。 上記の簡単な手順で、.NET Core MVC プロジェクトの作成と操作が完了します。この時点で、.NET Core SDK が Linux ホストにインストールされていないことに疑問を感じるかもしれません。MVC プロジェクトはどのように作成されるのでしょうか?ここで Docker の魔法が起こります。イメージ リポジトリから取得した dotnet イメージには、.NET Core プロジェクトの作成、ビルド、実行に必要なすべての依存関係とランタイム環境が含まれています。 コンテナを終了した後、find -name mvctest (mvctest ファイルを検索する) を実行すると、見つからないことがわかります。つまり、先ほど作成した .NET Core MVC プロジェクトはコンテナー内に作成され、ホスト マシンから完全に分離されます。この時点で、コンテナにソースコードをインストールするのは面倒すぎると思われるかもしれません。コンテナでホストマシンのソースコードプロジェクトを実行させることはできますか?まあ、それは良い質問ですね。もちろん可能です。この質問に答えてみましょう。 4. ホスト上に.NET Coreプロジェクトを作成する ホスト上に .NET Core プロジェクトを作成するには、Linux ホストに .NET Core SDK をインストールする必要があります。 1. ホストに.NET Core SDKをインストールする yum ソースを追加します: インストールを開始します: インストールされているバージョンを確認します。次の図はインストールが正しいことを示しています。 2. .NET Coreプロジェクトを作成する > mkdirデータ > CDデータ > dotnet new mvc -n mvctest // mvctest という名前の .NET Core MVC プロジェクトを作成します。> cd mvctest // mvctest フォルダーに移動します。> dotnet run // .NET Core MVC プロジェクトを開始します。 注: コード .UseUrls("http://*:5000") を Program.cs ファイルに追加し、次に示すようにブラウザーでアクセスします。 次のステップは、このディレクトリ内のソース コード プロジェクトをマウントしてコンテナーに共有することです。 3. ホストプロジェクトをコンテナにマウントする
// コマンド内の `\` と `Enter` キーを組み合わせると改行が形成され、新しい行に長いコマンドを入力できるようになります。 > docker run -it \ > -v /data/mvctest/:/app \ > マイクロソフト/ドットネット:最新 上記のコマンドは、/data/mvctest/ フォルダー内のファイルをコンテナーの \app ディレクトリにマウントします。 上記の実行結果から、コンテナ内のアプリ ディレクトリにホスト マシン上のソース コード プロジェクトが含まれていることがわかります。 前述のように、コンテナがホストディレクトリのコピーを持つのではなく、共有形式であるため、ホスト上のディレクトリへの変更はコンテナにすぐに反映されます。しかしその一方で、コンテナ内の共有ディレクトリへの変更はホストマシンに反映されず、コンテナの分離特性が損なわれます。 このような単純なシナリオを通して、このシナリオを日常のコーディングにどのように適用できるかを考えるほど賢いでしょうか?はい、継続的ビルド (CI) に使用できます。基本的な考え方は、git を介してソース コードをホスト マシンにクローンし、ソース コード ディレクトリをコンテナーにマウントして構築することです。 4. Dockerfileの助けを借りて 次の記事では、この操作を Dockerfile の依存なしにアップグレードし、1 つのコマンドで完了させます。 Dockerfile は、コンテナ内で実行する一連の操作を定義するために使用されます。最初のDockerfileを作成しましょう > cd /data/mvctest/ //作成したMVCプロジェクトディレクトリを入力してください> touch Dockerfile //touchコマンドを使用してDockerfileを作成します > vi Dockerfile //viコマンドを使用してDockerfileを編集します VI 編集インターフェイスに入ったら、次のコードをコピーし、shift + Ins コマンドを使用して貼り付けます。次に、ESE を押して編集モードを終了し、Shift + : を押して、wq と入力して保存し、編集インターフェイスを終了します。 microsoft/dotnet:latest から ワークディレクトリ /app コピー ./app ドットネット復元を実行する エクスポーズ5000 環境変数 ASPNETCORE_URLS http://*:5000 エントリポイント ["dotnet","run"] 上記のコマンドを一つずつ説明します。 FROMを使用してコンテナが使用するイメージを指定します WORKDIRを使用して作業ディレクトリを指定します COPY コマンドを使用して、現在のディレクトリ (. は現在のディレクトリを表します) をコンテナー内の /app ディレクトリにコピーします。 RUNコマンドを使用してコンテナ内で実行するコマンドを指定します。 EXPOSEを使用してコンテナによって公開されるポート番号を指定します。 ENV を使用して環境パラメータを指定します。これは、.NETCore プロジェクトに、すべてのネットワーク インターフェイスのポート 5000 をリッスンするように指示するために使用されます。 ENTRYPOINTを使用してコンテナのエントリポイントを指定します Dockerfile が準備できたので、現在のプロジェクトを配布および展開用のイメージにパッケージ化できます。 イメージをパッケージ化するには、docker build -t <name> <path> コマンドを使用します。 上記のコマンドは、Docker に現在のディレクトリをミラーにパッケージ化し、
上記の命令は、新しくパッケージ化されたイメージを実行し、-p パラメータを介してコンテナのポート 5000 をホストのポート 80 にマッピングします。-d パラメータは、Docker にイメージをバックグラウンド タスクとして実行するように指示します。ポート80はデフォルトのWebポートなので、ブラウザからIPに直接アクセスすることで、コンテナ内で実行されているMVC Webサイトにアクセスできます。 これまで、Docker の助けを借りて .NET Core プロジェクトのコンテナーの展開を完璧に完了しました。後で、イメージを他のマシンに展開します。 5. イメージをウェアハウスにプッシュする
1. 登録後、コマンドを実行する
上記の情報は、プッシュが成功したことを示しています。以下に示すように、独自のウェアハウスを確認してください。 最後に、マシンを変更し、次のコマンドを直接実行して、複数のデプロイメントを完了します。 上記のイメージリポジトリが準備できました。とても便利ですね。業務と組み合わせると、さらに多くのイメージが必要になることがわかります。コンテナの分散展開のために、コンテナを1つずつ起動する必要がありますか?いいえ、構成ファイルを通じてワンクリックでイメージとコンテナをデプロイすることもできます。これについては次の記事で説明します。 6. 一般的なDockerコマンド 1. コンテナ関連業務 > docker ps //現在実行中のコンテナを表示します> docker ps -a //すべてのコンテナのステータスを表示します> docker start/stop id/name //コンテナを起動/停止します> docker attach id //コンテナに入ります(exitを使用して終了すると、コンテナも実行を停止します) > docker rm id/name //コンテナを削除します。実行中の場合は、まず停止します。> docker rm $(docker ps -a -q) //停止したコンテナを削除します。> docker logs -f hello-world //指定したコンテナのログレコードを表示します。 -i: コンテナとの対話を可能にします (STDIN) -t: 新しいコンテナ内の疑似端末または端末を指定します --name: コンテナに名前を付けます。省略可能です。省略した場合、Docker はランダムな名前を生成します。 2. 画像関連の操作 > docker images //ローカルイメージを表示> docker rmi id/name //イメージを削除します。タグが指定されていない場合は、最新のタグがデフォルトで削除されます> docker rmi $(docker images -q) //すべてのイメージを削除します。注意してください> docker rmi $(docker images -f "dangling=true" -q) //名前のないイメージをすべて削除します(ビルドプロセス中に生成された中間イメージの可能性があります) > docker start/stop id/name //コンテナを起動/停止する> docker attach id //コンテナに入る(exitを使用して終了するとコンテナも停止します) ID タグによるミラーリング。以下は、ID 0e5574283393 のローカル イメージの「fedora」リポジトリへのタグ名 version1.0 です。 名前タグによるミラーリング。リポジトリ「fedora」にローカルにミラーリングするには、名前「httpd」タグを使用し、そのタグ名は version1.0 です。 参照されるhttpdのタグ名が指定されていないため、デフォルトの参照はhttpd:latestであることに注意してください。 名前とタグ名でイメージにタグを付けます。httpd という名前のローカル イメージにタグを付け、タグ名を test にします。リポジトリは fedora で、タグ名は version1.0.test です。 イメージをプライベート リポジトリにタグ付けします。パブリック Docker レジストリではなくプライベート レジストリにイメージをプッシュします。イメージにタグを付けるには、レジストリのホスト名とポートを指定する必要があります。 3. Docker CEをアンインストールする a. Dockerパッケージをアンインストールする
b. ホスト上のイメージ、コンテナ、ボリューム、またはカスタム構成ファイルは自動的に削除されません。 すべてのイメージ、コンテナ、ボリュームのコマンドを削除する
6. 追加知識の普及 1. Docker公式イメージライブラリのアドレス https://hub.docker.com/r/microsoft/dotnet/ 2. microsoft/dotnetイメージバージョンの違い a. microsoft/dotnet:<バージョン>-sdk (microsoft/dotnet:2.1-sdk) このイメージには、.NET Core とコマンドライン ツール (CLI) を含む .NET Core SDK が含まれています。 このイメージは開発シナリオにマッピングされます。 このイメージは、ローカル開発、デバッグ、ユニット テストに使用できます。 このイメージはシナリオの構築にも使用できます。 microsoft/dotnet:sdk を使用すると、常に最新バージョンが提供されます。 b. microsoft/dotnet:<バージョン>-runtime (microsoft/dotnet:2.1-runtime) このイメージには .NET Core (ランタイムとライブラリ) が含まれており、運用環境で .NET Core アプリを実行するために最適化されています。 c. microsoft/dotnet:<バージョン>-runtime-deps ランタイム依存関係イメージには、.NET Core に必要なすべてのネイティブ依存関係を含むオペレーティング システムが含まれています。 このイメージはスタンドアロン アプリケーション用です。 3. 画像の高速化 国内ネットワークの問題により、Docker イメージのその後のプルは非常に遅くなります。この問題を解決するためにアクセラレータを構成できます。私は NetEase ミラー アドレス http://hub-mirror.c.163.com を使用します。 新しいバージョンの Docker では、デーモンを構成するために これを設定ファイルに追加してください (そのようなファイルがない場合は、まず作成してください)。 { "レジストリミラー": ["http://hub-mirror.c.163.com"] } #設定ファイルを更新してdockerを再起動します systemctlデーモンリロード systemctl dockerを再起動します **********aliyunを使用する場合は、Alibaba Cloudアカウントにログインして独自のミラーアドレスを取得する必要があります*********** 要約する 以上が、エディターが紹介した .NETCore Docker コンテナ化とプライベートイメージリポジトリ管理です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、エディターがすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Windows10でのMySQL 5.7.21のインストールと設定のチュートリアル
<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...
1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...
1. Macvlan の紹介Macvlan が登場する前は、イーサネット カードに複数の IP ア...
この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...
目次Docker の基本概念Docker インストール プロセス (Centos6.9)カーネルのア...
序文MySQL マスター スレーブ レプリケーションの遅延は、業界では長年の問題となっています。遅延...
序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...
コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...
必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...
HTML: タイトル見出しは <h1> - <h6> などのタグによって定...
テーブル構造を設計する場合、数値型は最も一般的な型の 1 つですが、数値型をうまく使用するのは想像す...
Linux ヘルプ ドキュメントでの echo の説明は、Python や Java などのプログラ...
最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...
設置環境セントス環境依存性: yum -y gccをインストールします yum インストール -y ...
この記事では、LinuxでのMySQL 5.6.27のインストールチュートリアルを参考までに紹介しま...