docker アプリケーション、ビルド、コンテナー、イメージ、プライベート クラウド docker レジストリのビルド、コンテナー通信、ポート マッピング、マルチマシン、マルチコンテナー通信、データ永続性、docker デプロイメント wordpress、docker co

1. コンテナテクノロジーとDockerの紹介

1. 導入の進化

l アプリケーションを物理マシンに展開する

l 仮想化技術

2. 容器の必要性

l 開発者がアプリケーションを開発するには、さまざまな環境と依存関係が必要です

l 運用保守担当者もアプリケーションを導入する際にさまざまな環境を構築する必要があります

3. コンテナによって解決される問題

l 開発と運用保守の矛盾を解決する

4. コンテナとは何ですか

l ソフトウェアとその依存関係の標準化されたパッケージ化

l アプリケーション間の分離

l 同じOSカーネルを共有する

l 多くの主流オペレーティング システムで実行可能

5. 仮想マシンとコンテナの違い

l 仮想マシンは物理レベルで分離され、コンテナはアプリケーション レベルで分離されます。

6. ドッカーとはですか

l docker は現在コンテナ技術の最も人気のある実装です

l 2004 年から 2008 年にかけて、Linux に LXC が登場し、2013 年に LXC が docker パッケージ化され、2013 年 3 月にオープンソース化され、2016 年に docker がエンタープライズ版とコミュニティ版に分割されました。

7.  docker でできること

l 簡素化された構成

l 効率の向上

8.  dockerkubernates _

l docker は k8s で管理できます

l kubernetes (k8s と呼ばれます)

9. 開発運用

l DevOps - 開発と運用および保守の間の連携とコミュニケーションを解決します。

l docker だけでなく、バ​​ージョン管理、継続的統合などにも依存します。

10.  docker応用

l 2015 年の 6.18 プロモーション中、JD.com は Docker ベースのコンテナ テクノロジを大胆に使用して、プロモーションの主要なビジネス (画像表示、単一製品ページ、グループ購入ページ) を実行しました。 Docker コンテナ上 Docker コンテナはオンライン環境で実行され、大量のトラフィックのテストに耐えられます。

l 2016 年 6 月 18 日、Elastic Cloud プロジェクトはより重要な役割を果たしました。製品ページ、ユーザー注文、ユーザー検索、キャッシュ、データベースを含む、すべてのアプリケーション システムとほとんどの DB サービスが Docker 上で実行されています。JD Online が開始されます。約 150,000 個の Docker コンテナ

l JD Elastic Computing Cloudは、ソフトウェアデファインドデータセンターと大規模コンテナクラスタスケジューリングを通じて大規模なコンピューティングリソースの統合管理を実現し、パフォーマンスと効率の要件を満たし、セルフサービスオンラインサービスの効率を向上させます。アプリケーションの展開密度が大幅に向上し、リソース使用率が向上し、大量のハードウェア リソースが節約されます。

2.  Docker環境の各種構築方法

1.  Dockerのインストールの概要

l 公式ウェブサイト: https://docs.docker.com/

l Docker には、Community Edition (CE) と Enterprise Edition (EE) の 2 つのエディションが用意されています。

2.  dockerMacシステムにインストールされている

3.  Windowsシステムインストールされたdocker

4.  CentOSシステムインストールされたdocker

l 公式ドキュメント: CentOS に Docker エンジンをインストールする | Docker ドキュメント

残留物を防ぐ

yum ドッカーを削除します \

ドッカークライアント \

docker-クライアント-最新 \

docker-common \

ドッカー最新 \

docker-latest-logrotate \

docker-logrotate \

ドッカーセリナックス \

ドッカーエンジン-セリナックス\

ドッカーエンジン

 

使用される可能性のある依存関係をインストールする

yum install -y yum-utils \

デバイスマッパー永続データ \

LVM2

 

場所を追加

yum-config-manager \

--リポジトリの追加 \

https://download.docker.com/linux/centos/docker-ce.repo

 

インストールできる Docker バージョンを問い合わせる

yum list docker-ce --showduplicates | ソート -r

 

指定されたバージョンをインストールする

yum -y インストール docker-ce-18.06.1.ce-3.el7

 

オンにする

systemctl 開始ドッカー

 

自動起動を設定する

systemctl ドッカーを有効にする

 

バージョンを見る

 

dockerのインストール後、以下のファイルを修正し、内容を書き込み、dockerを再起動し、国内ミラーリングの設定を行います。

vi /etc/docker/daemon.json

以下を追加します。

{

"レジストリ ミラー": [

"https://kfwkfulq.mirror.aliyuncs.com",

"https://2lqq34jg.mirror.aliyuncs.com",

"https://pee6w651.mirror.aliyuncs.com",

"https://registry.docker-cn.com",

「http://hub-mirror.c.163.com」

]、

"DNS": ["8.8.8.8","8.8.4.4"]

}

ドッカーを再起動します 

systemctl 再起動ドッカー

5.  Ubuntuシステムインストールされたdocker

6.  docker-machineの使用

l Docker Machine は Docker によって公式に提供されるツールで、リモート マシンに Docker をインストールしたり、仮想マシン ホストに仮想マシンを直接インストールして仮想マシンに Docker をインストールしたりするのに役立ちます。

l これらの仮想マシンと Docker は docker-machine コマンドを通じて管理できます。

7. ドッカープレイグラウンド

l アドレス: https://labs.play-with-docker.com/

l クラウド内の Docker を直接使用する

一般、1人あたり4時間

左側をクリックしてインスタンスを追加します

 

3、  dockerイメージとコンテナ

1.  Dockerの基礎となるテクノロジーの実装アーキテクチャ

l docker はアプリをパッケージ化して実行するためのプラットフォームを提供します

l アプリを基盤となるインフラストラクチャから分離する

2.  dockerエンジン

l docker エンジンはコアであり、バックグラウンド プロセス dockerd があり、REST API インターフェイスと CLI インターフェイスを提供します。また、docker は C/S アーキテクチャです

3. 全体構成

 

4. 低レベルの技術サポート

l 名前空間: ネットワーク分離

l コントロールグループ: リソースの制約

l ユニオンファイルシステム: システム階層化

5.  Dockerイメージの概要

l はファイルとメタデータのコレクションです

6. ベースイメージの作成

l BaseImage: システムベースのベースイメージ

 

 

現在の場所に基づいてイメージをコンパイルします

docker build -t gochaochao/hello-world 。

 

まとめた画像を閲覧できます

ドッカーイメージ ls

 

イメージを実行してコンテナーになる

docker run ゴチャオチャオ/hello-world

 

公式から直接画像を取得することもできます

ドッカープル Redis

 

ビューミラー

 

7. コンテナの概念と用途

l コンテナはイメージとは異なるランタイムインスタンスとして理解できます

実行中のコンテナをすべて表示する

 

そうでない場合は、公式ダウンロードに移動してください

 

コンテナを対話的に実行できる

 

この時点で、現在のランタイム コンテナを確認できます。

 

ミラーを削除する

 

すべてのコンテナを削除することもできます

 

実行されていないすべてのインスタンスを検索する

 

次のコマンドは、実行されていないコンテナを削除できます。

 

 

8. イメージを作成する2 つの方法

l イメージに基づいてコンテナを作成した後、特定のソフトウェアのインストールなど、コンテナに変更を加えた場合、これらの変更を新しいイメージにコミットできます。これは docker commit とも略されます。

centos インスタンスを対話的に実行し、そこに lrzsz をインストールします

 

インストール後に終了する

 

変更されたコンテナを表示できます

 

この新しいコンテナを新しいイメージにパッケージ化します

新しいイメージを生成する

docker commit completed_hermann gochaochao/centos-lrzsz

 

ビューミラー

 

イメージIDに基づいてイメージレイヤー情報を表示することもできます。

 

l Dockerfile を使用してビルドを通じてイメージを作成します。これは docker build と省略できます。

定義ファイル経由でも同様の効果

 

 

コンパイルイメージ

docker build -t gochaochao/centos-lrzsz2 。

 

 

複数のミラーを確認できます

もう一度開始します: docker コンテナーの開始 470671670cac

 

9.  Dockerfile詳細説明

l FROM: どこから開始するか、システムから開始します

FROM スクラッチ # 最小限のシステム

セントスから         

ubuntuから:14.04

l ラベル: コメント

LABEL バージョン =”1.0”

LABEL author=”sjc”

l RUN: コマンドを実行します。RUNするたびに、システム層が 1 つ増え、可能な限り少ない層になります。

yum -y アップデートを実行し、lrzsz をインストールします \

ネットツール

l WORKDIR: ディレクトリを入力または作成します。相対パスは使用しないでください。

WORKDIR /root # /root ディレクトリを入力します

WORKDIR /test # はルートの下にあり、/test を作成して次のように入力します。

WORKDIR デモ # デモを作成し、入力します

RUN パスワード # /test/demo

l ADD と COPY: ローカル ファイルをイメージに追加します。COPY と ADD の違いは、解凍されないことです。

ADD hello / # 現在のディレクトリにある hello をコンテナのルートに追加します

ADD tt.tar.gz / # 圧縮パッケージを放り込んで解凍します

l ENV、Dockerfile の可読性と堅牢性を向上させます。

 

l CMD および ENTRYPOINT: コマンドを実行するか、スクリプトを実行します。

10.  Dockerfile —— CMD と ENTRYPOINT の比較

l シェルおよび実行形式

 

l ENTRYPOINT と CMD: コンテナの起動時に実行するコマンド

 

ENTRYPOINT は CMD よりもよく使用されます。これは、CMD が以前の CMD を実行し、後で定義された CMD を無視する可能性があるためです。

11.  Docker イメージを共有する

l イメージ名は Docker Hub ユーザー名で始まる必要があります

ログイン

 

イメージを Docker Hub にアップロードする

docker イメージ プッシュ gochaochao/centos-lrzsz2:latest

 

ミラーをローカルにダウンロードする

 

Docker Hubからイメージを削除したい場合

 

 

 

12.  Dockerfileを共有する

l docker イメージは Dockerfile の共有ほど安全ではありません

13. プライベートDocker レジストリを構築する

l github は公開されているため、独自のプライベート ウェアハウスを作成することもできます

Docker はプライベート ウェアハウスのミラー イメージを公式に提供します

 

2台目のマシンを専用倉庫として準備する

2番目は次のように実行されます

docker run -d -p 5000:5000 --restart always --name registry registry:2

 

プロセスを確認してください。問題なく動作しています

 

ブラウザは、2 番目のマシンの倉庫に何もないことを確認できます。

 

テスト ポート。最初のポートは Telnet に接続できます。

yum -y Telnet をインストールします

 

終了するには q を入力してください

 

dockerfile を作成し、必要なイメージ名をコンパイルします。

 

行全体を削除するには dd を押します

 

イメージをコンパイルします。IP はプライベート ウェアハウスの IP です。

docker build -t 192.168.190.131:5000/centos 。

 

ファイルを書き込み、行を追加する

"insecure-registries":["192.168.190.131:5000"],

 

 

ドッカーを再起動します

 

プライベートリポジトリにアップロードする

 

ページを更新すると、プライベート ウェアハウスにコンテンツが含まれます

 

プライベートウェアハウスから何かをダウンロードすると、次のようになります。

ドッカープル 192.168.190.131:5000/centos

14.  Dockerfileのケース_

l Python Webアプリケーションを作成し、実行するためにDockerイメージにパッケージ化します。

FlaskインポートからFlask

app = Flask(__name__)

@app.route('/')

def hello():

    「こんにちは、ドッカー」を返します

__name__ == '__main__'の場合:

    app.run()

ディレクトリを作成し、app.pyを作成し、上記のコードをコピーします。

 

 

Dockerfileの作成

 

Pythonから:3.6

LABEL auth="太陽"

pip install フラスコを実行します

app.py /app/ をコピーします

WORKDIR /app

エクスポーズ5000

CMD ["python","app.py"]

ビルドイメージ

docker build -t gochaochao/flask-hello-world 。

 

ミラーを実行します

docker run gochaochao/flask-hello-world

 

この時点でプロセスがわかります

 

15. 運転中にコンテナを操作する

l exec コマンドは、コマンドの呼び出しと実行に使用されます。

バックグラウンドプロセス

 

実行時のコンテナ ID に従って、内部のマシンを対話的に実行できます。

 

コンテナ内のマシンの Python シェルを対話的に実行します。

docker exec -it e8517231ecd8 Python

 

バックグラウンドでコンテナを実行し、コンテナ名を指定します

docker run -d --name=demo gochaochao/flask-hello-world

 

名前で止められる

 

実行時にコンテナの実行ログを表示できます

 

ランタイムコンテナの詳細を表示する

 

内部のアドレスに ping を実行します

 

16. コンテナリソースの制限

l メモリの制限

l CPUの制限

開いているコンテナーが占有するメモリと CPU を指定できます。

 

ドッカーネットワーク

1. ネットワークの分類

スタンドアロン

n ブリッジ ネットワーク: VMware のブリッジに相当し、デフォルトでこれを実行します。

n ホスト ネットワーク: VM と同様の NAT

n なし ネットワーク: ネットワークなし

l マルチマシン

n オーバーレイネットワーク: クラスターネットワーク

ネットワークカード情報を表示できます

 

2.  Linux ネットワーク名前空間namespace

l 名前空間は Docker の下部にある重要な概念です

3. ブリッジの詳しい説明

l マルチコンテナ通信

4. 容器通信

l コードを記述するときに、要求される IP アドレスが不明な場合があります。

最小限のシステムを実行する

docker run -d --name test1busybox /bin/sh -c "while true;do sleep 3600;done"

 

2 番目の最小システムから、最初のシステムをリンクします。

リンクはホスト名とマッピングの構成に似ています。

docker run -d --name test2 --link test1busybox /bin/sh -c "while true;do sleep 3600;done"

 

この時点で、test2 がプロジェクトをデプロイし、test1 がプロジェクトで使用される mysql をデプロイしたと仮定すると、プロジェクトが mysql にアクセスするときに、IP を指定せずにプロジェクトを作成し、それを test1 として指定すると、機能します。それはリンクです

5. ポートマッピング

l 外部アクセスを実現

nginxを実行するとプロセスが見つかります

 

 

ネットワークカードをブリッジしてコンテナのIPを表示する

 

 

このマシンから、nginx が起動されるホームページにアクセスできます

 

現時点では、外部の世界にアクセスできません。これはポート マッピングによって解決できます。

以前のコンテナを停止して削除する

 

ポートマッピング開始コンテナ

docker run --name web -d -p 80:80 nginx

 

この時点で、外部ブラウザは仮想マシン IP を介してコンテナ内のコンテンツにアクセスできるようになります。

 

6. なしおよびネットワークのホスト

l アプリケーション シナリオはなし: 非常に高いセキュリティ要件、極秘データの保存など。

l ホストネットワークはNATに似ています

7. マルチコンテナのデプロイメントとアプリケーション

フロントコンテナの掃除が可能

 

 

コンテナは 2 つあり、1 つは Web サービスとして flask を使用し、もう 1 つは自動インクリメントとして Redis を使用します。

まず、redis を実行します

 

 

ディレクトリを作成してコードを書く

 

l app.py

FlaskインポートからFlask

Redis から Redis をインポート

私たちを輸入してください

インポートソケット

app = Flask(__name__)

redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

@app.route('/')

def hello():

    redis.incr('ヒット')

    return 'Hello Container World! %s 回目撃されており、私のホスト名は %s です。\n' % (redis.get('hits'),socket.gethostname())

__name__ == "__main__"の場合:

    app.run(ホスト = "0.0.0.0"、ポート = 5000、デバッグ = True)

別の dockerfile を作成する

 

l Dockerfile

Pythonから:2.7

LABEL maintaner="[email protected]"

コピー 。/アプリ

WORKDIR /app

pip install flask redisを実行します

エクスポーズ5000

CMD [ "python", "app.py" ]

鏡を作る

docker build -t gochaochao/flask-redis 。

 

ビルドされたイメージを実行するには、外部アクセスで -p 5000:5000 を追加する必要があります。

 

2 つのコンテナが正常に実行されました

 

フラスココンテナに入り、実行中のコードにアクセスすると、redis auto-increment が呼び出されていることがわかります。

 

8. マルチマシン・マルチコンテナ通信

コンテナ IP が同じであるように見える場合がありますが、問題が発生します。etcd を追加してコンテナ IP を管理し、IP の競合を防ぐことができます。

 

2 台のマシンを開き、etcd インストール パッケージが 2 台のマシンに転送されます

 

すべて解凍します

 

1 つ目: 解凍した etcd を入力し、次のように実行します。IP の変更に注意してください。

Run.txt に移動してコマンドを見つけてコピーします。

etcd 起動コマンド (node01)、IP の変更に注意してください

nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://192.168.83.128:2380 \

--listen-peer-urls http://192.168.83.128:2380 \

--listen-client-urls http://192.168.83.128:2379,http://127.0.0.1:2379 \

--advertise-client-urls http://192.168.83.128:2379 \

--initial-cluster-token etcd-cluster \

--initial-cluster docker-node1=http://192.168.83.128:2380,docker-node2=http://192.168.83.130:2380 \

--initial-cluster-state new&

etcd 起動コマンド (node02)、IP の変更に注意してください

nohup ./etcd --name docker-node2 --initial-advertise-peer-urls http://192.168.83.130:2380 \

--listen-peer-urls http://192.168.83.130:2380 \

--listen-client-urls http://192.168.83.130:2379,http://127.0.0.1:2379 \

--advertise-client-urls http://192.168.83.130:2379 \

--initial-cluster-token etcd-cluster \

--initial-cluster docker-node1=http://192.168.83.128:2380,docker-node2=http://192.168.83.130:2380 \

--initial-cluster-state new&

 

2 etcd が正常な状態であることがわかります

 

この時点で docker を停止します

 

etcd によって管理される docker を実行する

/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.83.128:2379 --cluster-アドバタイズ=192.168.83.128:2375&

 

2 つ目も同じです。docker を停止し、.txt を実行して開始するコマンドを見つけます。

/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.83.130:2379 --cluster-アドバタイズ=192.168.83.130:2375&

ネットワーク Docker ネットワークを表示する

 

ネットワークの詳細を表示する docker network ls

 

上記が完了すると、最初のマシンが仮想ネットワーク カードを作成します。

docker network create -d オーバーレイのデモ

 

この時点で、2 番目のステーションもネットワークを認識できるようになります。

 

最初にコンテナを作成することもできます

docker run -d --name test3 --net demobusybox sh -c "while true;do sleep 3600;done"

 

この時点で、2 番目の Docker マシンも同様に実行され、エラーが報告されますが、すでに存在しています。これにより、クラスター内の Docker マシンがお互いを認識していないという状況が解決されます。

 

l たとえば、1 つは Redis 用、もう 1 つは Web 処理用です。

l app.py

FlaskインポートからFlask

Redis から Redis をインポート

私たちを輸入してください

インポートソケット

app = Flask(__name__)

redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

@app.route('/')

def hello():

    redis.incr('ヒット')

    return 'Hello Container World! %s 回目撃されており、私のホスト名は %s です。\n' % (redis.get('hits'),socket.gethostname())

__name__ == "__main__"の場合:

    app.run(ホスト = "0.0.0.0"、ポート = 5000、デバッグ = True)

l Dockerfile

Pythonから:2.7

LABEL maintaner="[email protected]"

コピー 。/アプリ

WORKDIR /app

pip install flask redisを実行します

エクスポーズ5000

CMD [ "python", "app.py" ]

9. オーバーレイネットワークとetcd通信

l 複数のマシンと複数のコンテナをデプロイする場合、アドレスが競合しないようにする必要があります。

5、  docker永続ストレージとデータ共有

1. データ永続性の導入

l コンテナ内のデータが失われるリスクがあります

2. データ永続化スキーム

l ローカルファイルシステムに基づくボリューム

l プラグインベースのボリューム

3. ボリュームタイプ_

l 管理されたデータボリューム: Docker バックグラウンドによって自動的に作成されます

l マウントされたボリュームをバインド: ユーザーは特定のマウント場所を指定できます。

4. データの永続性 - データ 量

l https://hub.docker.com/ mysql を検索すると、公式の Dockerfile にも VOLUME が定義されていることがわかります

公式のmysqlで定義されている

 

前コンテナを掃除する

 

バックグラウンドでmysqlを起動する

docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

 

ローカル Docker に保存されているすべてのデータ ファイルを表示する

 

詳細がローカルに保存されている場所を確認できます

 

永続的な Redis データ

 

永続的な mysql データ

 

保存されたmysqlライブラリファイル

 

参照されていないデータ ファイルをクリアできます

ドッカーボリュームプルーン

 

コンテナを起動し、永続データディレクトリファイルを指定します。

docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

 

mysqlをコンテナに入れる

 

終了するために何かを書く

 

 

コンテナをシャットダウンして削除する

 

データ同期の場所を指定し、mysql コンテナを開きます。

docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

 

対話的に実行すると、データがインポートされたことがわかります

 

 

5. データの永続化 - バインドの マウント

l コンテナと同期するフォルダを指定すると、コンテナが変更され、ファイルも同期して変更されます。

ディレクトリを検索し、ファイルを作成し、何かを書き込みます

 

 

dockerfile を書き込む

nginxから:最新

WORKDIR /usr/share/nginx/html

コピーindex.htmlindex.html

 

ビルドイメージ

 

コンテナを起動し、ディレクトリをマウントします

 

この時点で、ローカルのindex.htmlファイルを変更すると、その中でアクセスされるホームページが直接変更されます。

 

6.  Docker Compose のマルチコンテナーのデプロイメント

1.  dockerデプロイメントwordpress

l Wordpress はブログ サイトであり、2 つの画像と mysql が必要です。

すべての画像を見る

 

イメージをクリーンアップする

 

ワードプレスをダウンロード

 

5.5未満

 

5.5を最新のものに変更

docker タグ mysql:5.5 mysql:latest

 

mysqlミラーを起動します

 

WordPressミラーを起動する

 

ブラウザビュー

 

上記の wordpress のデプロイメントは 1 つずつダウンロードして開く必要があり、面倒で docker compose が必要です

2.  docker  compos概要_

l マルチコンテナAPPは展開と管理が難しく、docker composeはバッチ処理に似ています

3.  docker compose の インストール使用

まずファイルをディレクトリにアップロードします

 

l インストール後に権限が必要です

 

バージョン番号を表示する

 

フォルダーを作る

 

次の内容のファイルを作成します

 

l docker-compose を使用して wordpress をデプロイする

バージョン: '3'

サービス:

  ワードプレス:

    画像:ワードプレス

    ポート:

      - 80:80

    環境:

      WORDPRESS_DB_HOST: mysql

      WORDPRESS_DB_PASSWORD: 管理者

    ネットワーク:

      - 私の橋

  mysql:

    画像: mysql:5.5

    環境:

      MYSQL_ROOT_PASSWORD: 管理者

      MYSQL_DATABASE: ワードプレス

    ボリューム:

      - mysql-data:/var/lib/mysql

    ネットワーク:

      - 私の橋

ボリューム:

  mysql-データ:

ネットワーク:

  私のブリッジ:

    ドライバー:ブリッジ

作曲を開始する

 

ブラウザビュー

 

プロセスを閲覧できる

 

非常に複雑なプロジェクトの場合、docker-compose が記述されていれば簡単に実行できます。

 

4. コンテナのスケーリングと負荷分散

l コンテナの拡張

stop はコンテナを停止し、down は停止して削除します。

 

 

docker-compose と Dockerfile の組み合わせ

前の例では、docker-compose.yml を作成し、次の内容を追加します。

 

 

バージョン:「3」

サービス:

  レディス:

    画像: レディス

  ウェブ:

    建てる:

      コンテクスト: 。

      ドッカーファイル:ドッカーファイル

    ポート:

      - 8080:5000

    環境:

      REDIS_HOST: レディス

走る

 

ブラウザ経由でアクセスできる

 

docker-compose を停止します

 

docker-compose.yml 内の以下の 2 行を削除します。

 

コンテナのスケーリングを行う

 

負荷分散を追加します。

まず app.py を変更します

 

 

Dockerfileでも変更してください

 

 

docker-compose.yml ファイルに次の内容を追加し、負荷分散を行います

ポンド:

イメージ: dockercloud/haproxy

リンク:

- ウェブ

ポート:

- 8080:80

ボリューム:

- /var/run/docker.sock:/var/run/docker.sock

バージョン:「3」

サービス:

  レディス:

    画像: レディス

  ウェブ:

    建てる:

      コンテクスト: 。

      ドッカーファイル:ドッカーファイル

    環境:

      REDIS_HOST: レディス

  ポンド:

    イメージ: dockercloud/haproxy

    リンク:

      - ウェブ

    ポート:

      - 8080:80

    ボリューム:

      - /var/run/docker.sock:/var/run/docker.sock

コンテナを再度起動します

docker-compose up --scale web=3 -d

 

起動後、コードにアクセスすると、さまざまなコンテナから返された情報であることがわかります。

 

5. 複雑なアプリケーションの展開

l 6-5 プロジェクトの展開

セブン、 コンテナ手配港湾労働者 Swarm

k8s はすべての Docker を管理します

docker swarm には k8s と同様の機能があります

1. 温かいアレンジメント入門

 

l サービスの作成とスケジュール設定

l 群れ管理で意思決定を行い、ワーカーを配置する場所を決定します

 

2.  3ノードswarmクラスタの構築

私 

3. サービスの作成と維持、拡張

私 

4.  DockerStack を使用してVotingAppをデプロイする

私 

5.  DockerStack を使用してビジュアル アプリケーションをデプロイする

私 

6.  DockerSecret の使用と管理

私 

7. サービスバージョンをアップデートする

私 

8、  docker Cloud および docker enterprise エディション

1.  Docker社の事業紹介

l 2017 年の初めに、docker はコミュニティ エディションとエンタープライズ エディションに分割されました

l docker company はトレーニングも提供しています。URL: https://training.docker.com/

 

l Docker 会社も認定を提供しています。URL: http://success.docker.com/

 

l Apple の AppStore と同様、URL: https://store.docker.com/

 

l Web インターフェース URL: https://cloud.docker.com/ を通じてサービスを作成できます。これは有料です。

 

2.  Dockerクラウド自動構築

l これは、Docker サービスがクラウド上に構築されている場合でも、PaaS (Alibaba Cloud と同様) 上でコンテナ サービスを提供する Docker 会社の最初の CaaS (container-as-a-service) 製品です。

l は、コンテナの管理、オーケストレーション、デプロイメントを提供するマネージド サービスです

l docker 会社は 2015 年に tutum 会社を買収し、tutum を docker クラウドに変換しました

l docker Cloudが提供する主なモジュールは以下のとおりです。

 

l dockerクラウドを使用する場合は、githubアカウントに関連付ける必要があります

3.  Docker Enterprise Editionのオンライン使用

l Web サイト: https://www.docker.com/products/docker-enterprise

l Docker社が提供するシングルノードエンタープライズバージョンのトライアル版を使用します。トライアル時間は12時間です。

l クリックして適用

 

l オンライン試用時間が短すぎるため、以下ではローカル試用方法を使用します

4.  Alibaba Cloud 導入コンテナ

l Web サイト: Alibaba Cloud - Computing、計算できない値について

 

l 下にスクロールして、右側の「Container Service」をクリックします

 

l クリックするとすぐにアクティブになります

 

l Alipayで直接ログインできます

 

l 認可

 

l 登録する

 

l 即時アクティベーション、実名認証が必要な場合があります

 

無事にアクティベートされました

 

l 承認に同意する

 

5.  Alibaba Cloud がdockerEEをデプロイする

l ウェブサイト: https://cn.aliyun.com/

9、 コンテナ オーケストレーション Kubernetes

l Kubernetes は Google のオープンソース コンテナ クラスタ管理システムですが、ブロックされる可能性があるため、必要です。

l k8s と呼ばれる、2017 年末、docker は k8s のサポートを発表し、k8s が段階的に勝利を収めたと発表しました。

l 2014 年 7 月に Docker が Orchard Labs を買収し、Docker はコンテナ配置の分野に足を踏み入れ始めましたが、Orchard Labs は 2013 年に 2 人の優秀な若者によって設立された会社で、当時非常に有名なコンテナ配置ツールの図を持っていました。そして、この図は docker-compose の前身です

l 2015 年の初めに、Docker は Swarm をリリースし、Kubernetes に追いつき始め、コンテナ オーケストレーションの分野に正式に参入し、k8s と競合しました。

l 2017 年 3 月、Docker は Docker Enterprise Edition の誕生を発表しました。それ以来、Docker はコミュニティ エディションとエンタープライズ エディションを区別し始めました。2016 年から 2017 年初頭にかけて、Docker による一連の行動は、Docker の収益性への圧力を完全に実証しました。スタートアップ企業。Docker による一連の取り組みによって、Docker Swarm がコンテナ オーケストレーションの頂点に達することはありませんでしたが、それどころか、Kubernetes はその優れたアーキテクチャと健全なコミュニティ環境により急速に発展し、本番環境で広く使用されるようになりました。そして好循環が続きます。2017 年、大手メーカーは Kubernetes、Amazon AWS、Microsoft Azure、VMware を採用し始め、一部のメーカーは自社製品を放棄しました。

l 2017 年末、Docker は独自のエンタープライズ バージョンで Kubernetes をサポートし、Swarm と合わせてユーザーが選択できるコンテナ オーケストレーション ソリューションとして機能することを発表しました。

l コンテナ基盤テクノロジーの分野では、Docker が依然としてリーダーであり、Kubernetes の最下層は依然としてcontainerd の使用を選択しています。

 

l swarmアーキテクチャ

l k8s アーキテクチャでは、マスターはマスターと呼ばれ、スレーブはノードと呼ばれます

 

l k8s のマスターノード、API サーバーは外部にあり、UI を通じてアクセスできます。スケジューラーはスケジューリングモジュール、コントローラーは制御モジュール、etcd は分散ストレージで、k8s の状態と構成全体を保存します。

 

l k8s のノード、pod はコンテナ内のスケジューリングの最小単位であり、同じ名前空間を持つコンテナの組み合わせを指します、kubelet はプロキシに似ており、コンテナの作成を管理できます、kube-proxy が関連していますネットワークに接続し、ポート プロキシおよび転送として使用されます。ログを収集、保存、クエリするために使用されます。

 

l k8s の全体的なアーキテクチャ

 

https://www.cnblogs.com/zhang-da/p/13062671.htmlより転載

おすすめ

転載: blog.csdn.net/lingshengxiyou/article/details/130369742