Docker仮想化コンテナテクノロジーに関する研究

Dockerの背景

  1クラウドサービス運用モデル 

IaaS(サービスとしてのインフラストラクチャ):Alibaba Cloudサーバーなどのオペレーティングインフラストラクチャ(オペレーティングシステムのみがインストールされています)

PaaS(サービスとしてのプラットフォーム):MySQL開発プラットフォーム(Linuxにインストールされている既成のプラットフォーム)やredis開発プラットフォームなどのオペレーティングプラットフォーム。

SaaS(サービスとしてのソフトウェア):会社のOAシステムなどのオペレーティングソフトウェア(リモートサーバーに展開されたOAソフトウェア) 

2 Dockerとは

Dockerは仮想化されたコンテナー技術です。Dockerの仮想化コンテナーテクノロジーにより、物理マシンのリソースをより合理的かつ効果的に使用でき、物理マシンを完全なオペレーティングシステムを備え、互いに独立した多くの「仮想コンピューター」に仮想化できます。 

仮想化(仮想化) 

   リソース管理テクノロジーは、サーバー、ネットワーク、メモリ、ストレージなど、コンピューターのさまざまな物理リソースを抽象化して変換し、物理構造間の分離できない障壁を打ち破り、ユーザーが元のこれらのリソースを適用するより良い方法。これらのリソースの新しい仮想部分は、既存のリソースが地理的または物理的にセットアップされる方法によって制限されません。一般的に仮想化リソースと呼ばれ、計算能力とデータストレージを含みます

実際の実稼働環境では、仮想化テクノロジーは主に、高性能の物理ハードウェアの過剰容量の再構築と再利用を解決するために使用され、古いハードウェア容量が低すぎるため、基礎となる物理ハードウェアを透過的にして、物理ハードウェアの使用を最大化します。

  仮想化テクノロジーの分類

  ソフトウェア仮想化、ハードウェア仮想化、メモリ仮想化、ネットワーク仮想化、デスクトップ仮想化、サービス仮想化、仮想マシン

  Dockerは、オペレーティングシステム仮想化テクノロジーに基づく実装です。 

3 VM vs Docker

起動速度が速い   Dockerコンテナの起動オペレーティングシステムは数秒で完了しますが、VMwareは1分レベルに達しています

システムリソースの消費量   が少ないLinuxサーバーは何千ものDockerコンテナを実行できますが、VMwareは同時に約10しか実行できません

容易な移行と拡張   DockerコンテナーはVMwareよりも少ないハードディスク容量を使用するため、複数のソフトウェア環境のセットを構築する必要がある場合、インストールされたDockerコンテナーを移行する方がより高速で便利です。Dockerコンテナーは、仮想マシン、物理マシン、パブリッククラウド、プライベートクラウド、パーソナルコンピューターなど、ほぼすべてのプラットフォームで実行できます。この互換性により、ユーザーはアプリケーションをあるプラットフォームから別のプラットフォームに直接移行できます。

2つのDockerコアコンセプト 

Dockerには4つの基本的な概念があります。

 镜像(Image)

コンテナ

倉庫登録センター(レジストリ)

リポジトリ 

1ミラー 

 Dockerイメージ(イメージ)は読み取り専用のテンプレートですDockerイメージを使用してDockerコンテナーを作成できます

 DockerイメージとDockerコンテナーの関係は、Javaのクラスとオブジェクトの関係に似ています。

Dockerは、イメージを作成したり、既存のイメージを更新したりするための非常にシンプルなメカニズムを提供します。ユーザーは、既に準備されているイメージを他のユーザーから直接ダウンロードして直接使用することもできます。 

2 容器 

Dockerはコンテナを使用してアプリケーションを実行します。コンテナは、イメージから作成されたインスタンスを実行します。開始、開始、停止、削除できます。各コンテナは、安全を保証する独立したプラットフォームです 

3レジストリとリポジトリ 

レジストリは画像ファイルを一元的に保存する場所であり、リポジトリは画像を分類して管理するためのものです。

レジストリには複数のリポジトリがあり、リポジトリには
異なるタグを持つ複数の  イメージがあります 

レジストリは、パブリックとプライベートの2つの形式に分かれています。 

最大の公開レジストリはDocker Hubであり、ユーザーがダウンロードして使用するための多数のイメージが格納されています

国内のパブリックレジストリには、より安定した高速アクセスを提供できるNetease Cloud、DaoCloud、AliCloudなどが含まれます。

ユーザーはローカルでプライベートレジストリを作成できます

ユーザーは自分のイメージを作成した後、pushコマンドを使用してそれをパブリックまたはプライベートレジストリにアップロードできます。そのため、次に別のマシンでイメージを使用するときは、レジストリからイメージをプルして実行するだけで済みます。

 

3つのDockerのインストール 

1公式のデフォルトオペレーティングシステムがUbuntuにインストールされています

インストールする前に、yum -y remove dockerを アンインストールできます。
 

インストール:
 yum install -y docker 

開始:
 systemctl start docker

#systemctl start docker.service 

ミラーのリスト 

ドッカー画像 

リポジトリ:ミラーが配置されている倉庫の名前
 タグ:ミラーのバージョン
 イメージID:ミラーID 

作成:画像作成時間
 サイズ:画像サイズ

検索ミラー 

ドッカー検索画像名 

名前:倉庫名 
説明:ミラーの説明
STARS :ミラー  の人気を反映したユーザー評価 
公式:公式であるかどうか:自動ビルド、ミラーがDocker Hub自動ビルドプロセスによって作成されたことを示します

2画像を引く 

Docker Hub(https://hub.docker.com/ )はdockerのデフォルトのパブリックレジストリですが、不利な点は国内ダウンロードが遅くなることです。

ustcからプル

ホストマシンでファイルを編集します(centos7はvimコマンドをサポートしていませんが、viコマンドをサポートしています):vi /etc/docker/daemon.json 

参加する 

{「レジストリミラー」:["https://docker.mirrors.ustc.edu.cn"]

最後に、Dockerサービスを再起動する必要があります 

systemctl restart docker 

ドッカープルセント:7 

3ミラーを削除する 

指定した画像を削除します

docker rmiリポジトリ:タグ

docker rmi imageID 

すべてのミラーを削除 

docker rmi $(docker images -q) 

削除の際、画像のIDが同じ場合は、画像(参照)の関連付けがあるため、特定の順番で削除する必要があります。

4画像のインポートとエクスポート(画像の移行) 

画像をエクスポートします。 

docker save repository:tag / imageId> /root/xx.tar.gz 

docker save -o mynginx.tar mynginx 

-o出力ファイル 

画像をインポート: 

docker load </root/xx.tar.gz 

docker load -i mynginx.tar 

-iファイルを入力し、実行後にイメージを再度確認すると、イメージが復元されていることがわかります 

3つのDockerコンテナー 

1コンテナを作成して実行する 

コンテナーの作成コマンド:docker run 

コンテナーを作成するために一般的に使用されるパラメーターの説明:

-i:コンテナを実行することを意味します 
-t:コンテナは起動後にコマンドラインを入力することを意味します。これらの2つのパラメーターを追加した後、コンテナーの作成でログインできます。つまり、疑似端末が割り当てられます。 
--name:作成したコンテナに名前を付けます。 
-v:ディレクトリマッピング関係を示します(前者はホストディレクトリ、後者はホスト上のディレクトリにマップされます)。複数の-vを使用して、複数のディレクトリまたはファイルマッピングを実行できます。注:ディレクトリマッピングを行い、ホストマシンで変更を加えてから、コンテナで共有するのが最適です。 
-d:実行後に-dパラメーターを追加すると、バックグラウンドで実行するデーモンコンテナーが作成されます(コンテナーの作成後にコンテナーが自動的にログインされないようにするため、2つのパラメーター-i -tのみを追加すると、作成後に自動的に作成されますコンテナに)。 
-p:ポートマッピングを示します。前者はホストポート、後者はコンテナ内のマッピングされたポートです。複数のポートマッピングに複数の-pを使用できます 

コンテナをインタラクティブに実行する

docker run -i -t --nameコンテナー名リポジトリ:tag / bin / bash 

docker run -it --nameコンテナ名imageID / bin / bash

コンテナーをデーモンとして実行します。 

docker run -di --nameコンテナ名リポジトリ:tag 
docker run -di --nameコンテナ名imageID

実行を通じてコン​​テナーを作成して入力した後、exitコマンドを使用してコンテナーを終了すると、コンテナーは停止します。コンテナーを再度入力します。最初にstartを使用してコンテナーを開始し、exec / attachコマンドを使用してコンテナーを入力します 

2コンテナを起動します 

docker startコンテナー名またはコンテナーID 

3コンテナに入る 

実行中のコンテナーに入るコマンドは次のとおりです。 

docker exec -itコンテナー名またはコンテナーID / bin / bash 

docker attachコンテナー名またはコンテナーID

コンテナーに接続した後、exitを使用してコンテナーを終了すると、コンテナーは停止します。 

execがコンテナーに入った後、exitを使用してコンテナーを終了します。コンテナーはまだ実行中です。

4コンテナを見る 

docker ps:実行中のコンテナーを表示する

docker ps -a:過去に実行されたコンテナーを表示する

docker ps -l:最近実行されたコンテナーを表示する

5コンテナを停止します 

docker stopコンテナー名またはコンテナーID 

6コンテナを削除する 

指定されたコンテナーを削除します:   docker rmコンテナー名またはコンテナーID 

すべてのコンテナーを削除します:  docker rm 'docker ps -a -q' 

7ファイルをコピーする 

ドッカーcpソースファイルターゲットテキスト

docker cp /root/boot.war my-centos:/ usr / local / 

/root/boot.warはホストマシンのパスです

my-centosはコンテナの名前です

/ usr / local /は、コンテナ内のパスです。
ソースファイルは、ホストマシンまたはコンテナ内のファイルです。同様に、ターゲットファイルは、コンテナまたはホストマシン内のファイルです。


 4つのDockerアプリケーション

docker pull mysql:5.6 

ドッカー画像 

mysqlコンテナーを作成する

docker run -di --name exp_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD = root mysql:5.6 

-pはポートマッピングを表し、形式はホストマップポートです:コンテナー実行ポート 

-eは、環境変数MYSQL_ROOT_PASSWORDがrootユーザーのログインパスワードであることを追加することを意味します 

MySQLコンテナに入り、MySQLにログインします 

docker exec -it exp_mysql / bin / bash 

MySQLにログイン 

mysql -u root -p 

mysqlへのリモートログイン

 

コンテナのIPアドレスを表示する 

docker inspect exp_mysql 


 5つの手作りミラー

 

要件:Tomcatイメージを作成する

1基本イメージ(centos7)をダウンロードしますdocker pull centos:7 

2 64ビットjdkをインストールします(注:jdkはosの数と同じでなければなりません) 

vi / etc / profile 

export JAVA_HOME = / opt / jdk export PATH = $ JAVA_HOME / bin:$ PATH 

ソース/ etc / profile 

3 Tomcatをインストールする 

4新しい画像を生成する 

docker commitコンテナー名またはコンテナーID新しいミラー名


 


 

 


 


 
 

リリース3元の記事 ウォンの賞賛4 ビュー2058

おすすめ

転載: blog.csdn.net/liuguangjian2007/article/details/105466924