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新しいミラー名