目次
数日前、突然、巨大な人工知能学習 Web サイトを発見しました。わかりやすくて、ユーモアたっぷりです。思わずみんなにシェアしたくなりました。興味のある学生は学習できます。 人工知能の学習
1: Docker の黙示録
これまでのマイクロサービスを調査した結果、サービスのデプロイという非常に厄介な問題が見つかりました。マイクロサービスは数多くあり、デプロイするのは非常に面倒です。 今すぐ Docker を学び、このマイクロサービス デプロイメントの問題を解決してください。!
1. Docker の黙示録
プロジェクトの展開の問題
大規模なプロジェクトには多くのコンポーネントがあり、動作環境は比較的複雑です。デプロイメント中にいくつかの問題が発生します: 複雑な依存関係と互換性の問題が発生しやすいです。開発環境、テスト環境、運用環境が異なります。
各種マイクロサービスのフロントエンド部分はNodeとJSに依存しており、サーバー側にはデータベースMySQL、キャッシュシステムRedis、非同期通信MQなどが必要となります。これらはサーバー (Linux オペレーティング システム) にデプロイする必要があります。各アプリケーションには依存関係と関数ライブラリが必要ですが、各アプリケーションの依存関係と関数ライブラリは異なります (依存関係は複雑ですが、簡単です)互換性を生み出すため)。開発環境をセットアップしたら、後でテスト環境と実稼働環境を作成します (対応するオペレーティング システム環境は異なる場合があります: Centos、Ubuntu)
Docker は依存関係の互換性の問題をどのように解決しますか?
各アプリケーションには独自の依存関係と関数ライブラリがあるため、Docker は Libs (関数ライブラリ)、Deps (依存関係)、 アプリケーションの構成をアプリケーション < /span>します。各アプリケーションを分離されたコンテナに入れて実行!そして、 相互干渉を避ける
Docker はさまざまな環境のオペレーティング システムをどのように解決しますか?
環境ごとにオペレーティングシステムが異なります(LinuxとUbuntuのネイティブ関数ライブラリが異なります)。Dockerはそれをどのように解決しますか?まずオペレーティング システムの構造を理解しましょう。
すべての Linux オペレーティング システムは、Linux カーネル (すべて同じ) とシステム アプリケーション (上位層のアプリケーションが異なるという違い) の 2 つの層に分けることができます。 カーネルは、コンピュータのハードウェアと通信し、ハードウェアを操作するための命令を提供する役割を果たします。 システム アプリケーションは、プログラマが簡単に呼び出せるように、カーネル命令を関数にカプセル化します。ユーザー プログラムは、システム関数ライブラリに基づいて関数を実装します。 プログラムは関数ライブラリを呼び出します---》関数ライブラリはカーネル命令を呼び出します--->>コンピュータ ハードウェアへの呼び出しを指定します。これにより、アプリケーションの実行。
Ubuntu と CentOS はどちらも Linux カーネルに基づいていますが、システム アプリケーションが異なり、提供される関数ライブラリも異なります。したがって、Ubuntu 環境のパッケージング プログラムに従ってください。 、Centosに置くことは可能です 動作しません!
Docker は、必要なシステム (Ubuntu や Centos など) 関数ライブラリとともにユーザー プログラムをパッケージ化します。 Docker がさまざまなオペレーティング システム上で実行される場合、 パッケージ化されたライブラリ関数に直接基づいて実行され、 オペレーティング システムの Linux カーネルの助けを借りて実行されます。
1. Docker は、複雑な依存関係や大規模プロジェクト内のさまざまなコンポーネントへの依存関係による互換性の問題をどのように解決しますか?
①Docker を使用すると、開発中にアプリケーション、依存関係、関数ライブラリ、および構成をパッケージ化して移植可能なイメージを形成できます。
②Docker アプリケーションはコンテナ内で実行され、サンドボックス メカニズムを使用して相互に分離されます。
2. Docker は、開発環境、テスト環境、運用環境の違いの問題をどのように解決しますか?
①Docker イメージには、システム関数ライブラリを含む完全なオペレーティング環境が含まれており、システムの Linux カーネルのみに依存するため、どの Linux オペレーティング システムでも実行できます。
概要: Docker は、アプリケーションを迅速に配信して実行するためのテクノロジーです。
① プログラム、その依存関係、およびオペレーティング環境をイメージにパッケージ化して、任意の Linux オペレーティング システムに移行できます。
② サンドボックスメカニズムを使用して実行時に分離されたコンテナを形成し、各アプリケーションが相互に干渉しないようにします。
③起動と削除は 1 行のコマンドで完了でき、便利で速いです。
2. Docker と仮想マシンの違い
Docker と仮想マシン
Docker 実装の原則:Docker を使用すると、アプリケーションとその依存関数ライブラリ、さらにはオペレーティング システムの関数ライブラリを統合することによって、アプリケーションをさまざまな Linux 環境で実行できるようになります。このようにして、アプリケーションの実行中に、ローカル関数ライブラリを直接呼び出して、オペレーティング システムのカーネルと対話することができます。このようにして、アプリケーションがどのような種類のシステムであるかを気にする必要はなく、クロスシステム運用が実現できる! (オペレーティング システムのカーネルを直接呼び出すため、パフォーマンスが向上します。)
仮想マシンの実装原理:ハイパーバイザー テクノロジーを使用して、1 つのオペレーティング システム上に別のオペレーティング システムをインストールし、さまざまなコンピュータ ハードウェアをシミュレートします。シミュレートされたコンピュータ ハードウェアには任意のコンピュータ ハードウェアをインストールできます。コンピューターのオペレーティング システムにアクセスすると、アプリケーションや依存関係などをインストールできます。あるシステムに別のシステムをインストールすると、アプリケーションが実行されると、アプリケーションは実際のコンピュータ上で実行されていると認識します。最初に、組み込みのオペレーティング システムを呼び出します ---「Hypevisor との対話 ---」送信外部の実コンピュータへの情報 オペレーティング システム--->> 次に、外部オペレーティング システムがコンピュータ ハードウェアを呼び出します。 (レイヤーごとに送信されるため、パフォーマンスが低下します。)
、
両者の比較
Docker と仮想マシンの違い:
①Dockerはシステムプロセスであり、仮想マシンはオペレーティングシステム内のオペレーティングシステムです。
②Dockerはサイズが小さい、起動が速い、パフォーマンスが良い、仮想マシンはサイズが大きい、起動が遅い、パフォーマンスは平均的。
3. Docker アーキテクチャ
イメージとコンテナ
イメージ: Docker は、アプリケーションとその必要な依存関係、関数ライブラリ、環境、構成、その他のファイルをパッケージ化し、イメージと呼ばれます。
コンテナ (コンテナ):イメージ内のアプリケーションの実行後に形成されるプロセスがコンテナです。, Dockerがコンテナを隔離して外から見えないようにするだけです。
MySQL の場合、これは MySQL 自体を構成する多くのファイルを含むミラーであるため、ミラーはハードディスク上のファイルであると言えます。 データを書き込むコンテナは、ファイルを独自の独立したコンテナにコピーできます!コンテナにデータを書き込むにはどうすればよいですか? はコンテナに基づいて新しいイメージを作成でき、イメージはすべて読み取り専用になります。ですが、コンテナは Docker 内で分離する必要があります。独自の内容をイメージに書き込むことができないコンテナの場合 (イメージ汚染の原因となる)、MySQL が実行されるプロセスはコンテナ;
DockerHub (イメージ共有)
画像を他の人と共有するにはどうすればよいですか?これには、DockerHub (イメージ ホスティング) が GitHub とよく似ている必要があります。
DockerHub: DockerHub は Docker イメージのホスティング プラットフォームです。このようなプラットフォームは Docker Registry (ミラー サーバー) と呼ばれます。中国には、NetEase Cloud Mirror Service、Alibaba Cloud Mirror Library< など、DockerHub に似たパブリック サービスもあります。 /span>など。
プログラマは、Docker が提供するコマンドを使用して、MySQL や Nginx イメージなどのイメージを構築し、これらのイメージを DockerHub サーバーにアップロードできます (公開すると危険です)。また、プライベート クラウドを構築することもできます。
Docker アーキテクチャ
Docker を使用してイメージをビルド、プル、実行するにはどうすればよいですか?これには、Docker のアーキテクチャを理解する必要があります。
Docker はCS アーキテクチャを備えたプログラムであり、次の 2 つの部分で構成されます。
サーバー:Docker 命令の処理、イメージの管理、コンテナの構築などを担当する Docker デーモン。
クライアント: コマンド (ローカル) または RestAPI 経由request (remote)Docker サーバーに指示を送信します。ローカルまたはリモートでサーバーに指示を送信できます;あ>
例: イメージをローカルでビルドするには、docker build コマンドを使用します。このコマンドが DockerServer に到達すると、デーモン プロセス docker デーモン。 データミラーを構築します。 DockerRegisterdocker pull を使用して、DockerServer 経由でイメージをプルすることもできます。その後、イメージを実行してコンテナを作成できます。この時点では、docker run が必要です。 コマンドを使用すると、DockerServer の docker デーモンにコンテナの作成を完了するよう指示し、最終的にデプロイを完了します。
ミラー: アプリケーションとその依存関係、環境、構成を一緒にパッケージ化します (システム ファイルとして表示できます)。
コンテナ:実行中のイメージはコンテナです。1 つのイメージで複数のコンテナを実行できます (実行中のプロセスとみなすことができます)。
Docker の構造を要約すると、次のようになります。
サーバー: コマンドまたはリモート要求を受信し、イメージまたはコンテナーを操作します。
クライアント: コマンドまたはリクエストを Docker サーバーに送信します。
DockerHub:Alibaba Cloud ミラー サービスに似たミラー ホスティング サーバー。総称して DockerRegistry と呼ばれます。
4. Centos7にDockerをインストールする
エンタープライズ展開では一般に Linux オペレーティング システムが使用されますが、その中で CentOS ディストリビューションが最も大きな割合を占めるため、CentOS の下に Docker をインストールします。 Docker は、CE と EE の 2 つの主要なバージョンに分かれています。 CEはコミュニティ版(無料、サポート期間は7か月)、EEはセキュリティを重視したエンタープライズ版で利用は有料、サポート期間は24か月です。
注:Docker CE は CentOS 7 の 64 ビット バージョンをサポートしており、カーネル バージョンが 3.10 以上である必要があります。CentOS 7 はカーネルの最小要件を満たしているため、 CentOS 7 に Docker をインストールします。
4.1. アンインストール
以前に古いバージョンの Docker をインストールしたことがある場合は、次のコマンドを使用してアンインストールできます。
注: バックスラッシュ \ はコマンドの結合を示します。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
4.2. ドッカーのインストール
まず、仮想マシンをインターネットに接続し、yum ツール (ダウンロード ツール) をインストールする必要があります。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
次に、ローカルのミラーソースを更新します(デフォルトでは海外に接続しますが、切断されやすく、時間がかかります)。
# 设置docker镜像源为阿里云
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
Dockerコミュニティエディションをインストールする
yum install -y docker-ce
4.3. ドッカーの起動
Docker アプリケーションはさまざまなポートを使用し、ファイアウォール設定を 1 つずつ変更する必要があります。非常に面倒なので、ファイアウォールを直接オフにすることをお勧めします。 Docker を起動する前に、必ずファイアウォールをオフにしてください。 !
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 查看防火墙的状态
systemctl status firewalld
コマンドでdockerを起動する
systemctl status docker # 查看当前docker的状态
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
次に、Docker のバージョンを確認するコマンドを入力します (バージョン番号は、起動に成功した後にのみ確認できます)。
docker -v
4.4. 画像アクセラレーションの設定
Docker 公式イメージ ウェアハウスのネットワーク速度が遅いため、国内のイメージ サービスをセットアップする必要があります。Alibaba Cloud のイメージ アクセラレーション ドキュメントを参照してください。
デーモン設定ファイル /etc/docker/daemon.json を変更することでアクセラレータを使用できます。daemon.json で Alibaba Cloud ミラー アドレスを設定します。
# 创建一个路径
sudo mkdir -p /etc/docker
# 把阿里云的地址追加到daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6aqbcoj9.mirror.aliyuncs.com"]
}
EOF # 表示终止
# 重新加载上面的文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker