Docker に MySQL をデプロイする例

Docker に MySQL をデプロイする例

コンテナ クラウドの概念は今とても人気があります。多くの企業がコンテナ上に MySQL を導入しています。今日のコンテンツを始める前に、コンテナ クラウドの概念について見てみましょう。

1 コンテナクラウドとは何ですか?

コンテナクラウドの概念を理解するには、まずコンテナを理解する必要があります。コンテナを導入する際には、比較のために仮想マシンを導入する必要があります。

仮想マシン:

VMware または Virtual BoX と呼ばれる仮想マシンは、誰もが日常業務で使用したことがあるはずです。これは、コンピューターのオペレーティング システムをシミュレートするソフトウェアです。Windows コンピューターに Virtual BoX ソフトウェアをインストールし、Centos や Ubuntu などの Linux オペレーティング システムを Virtual Box にインストールすると、1 台のマシンで複数の種類のオペレーティング システムを実行できるため、開発およびテスト作業が非常に便利になります。

仮想マシンの欠点は、大量のリソースを消費することです。各仮想マシンはメモリとディスク領域を個別に割り当て、CPU リソースと基盤となるハードウェア リソースも大量に消費します。Hello World プログラムを実行するだけでは、大量のリソースが無駄になります。

容器:

この問題を解決するために登場したのがコンテナです。コンテナは、アプリケーションコードのソースコード、依存ライブラリ、オペレーティングシステムなど、アプリケーションに必要なすべてのリソースをまとめてパッケージ化し、環境に制約されることなく、どこでもアプリケーションを簡単に実行できるようにする、より軽量で柔軟な仮想化処理技術です。

仮想マシンと比較すると、コンテナは軽量で、移植性が高く、コストが低く、効率的です。

コンテナ クラウドは、クラウド上のコンテナ テクノロジ サービスとして理解できます。

2 Dockerの紹介

Docker はオープンソースのアプリケーション コンテナ エンジンです。ツールとして理解できます。Go 言語に基づいて開発され、Apache 2.0 プロトコルと互換性があります。アプリケーションとその依存関係 (構成ファイルなど) をコンテナにパッケージ化できます。

さらに、さまざまな環境と互換性があり、ラップトップ、社内サーバー、パブリッククラウド、プライベートクラウドに展開できます。優れた移植性と柔軟な展開を備えており、さまざまな環境での互換性の問題を解決します。

Docker には 3 つの基本概念が含まれています。

画像
容器
リポジトリ

上の図に示すように、これら 3 つの部分が Docker のライフサイクル全体を構成します。

Docker イメージには、仮想マシン イメージに似たファイル システムが含まれており、読み取り専用のテンプレートです。

Docker コンテナはイメージからインスタンス化されますが、これは私たちが学んだオブジェクト指向の概念と非常によく似ています。クラスがインスタンス化された後、イメージをクラス、コンテナをオブジェクトとして想像することができます。これにより、イメージとコンテナの関係を非常に簡単に理解できます。

Dockerリポジトリ: コードリポジトリと同様に、Dockerがイメージファイルを集中的に保存する場所です。

この関係は次のようにより明確に表現できます。

Docker のインストールを見てみましょう。

1. 必要なパッケージをインストールします。yum-utilsはyum-config-managerを提供し、デバイスマッパーストレージドライバーにはdevice-mapper-persistent-dataとlvm2が必要です。

yum をインストール -y yum-utils
yum インストール -y デバイスマッパー永続データ
yum インストール -y lvm2

2. 安定したDockerリポジトリを設定する

yum-config-manager \
    --リポジトリを追加\
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. Docker Engine-Communityをインストールする

yum インストール docker-ce docker-ce-cli cotainerd.io

この時点では、Docker はインストールされていますが、デフォルトでは起動されていません。 docker ユーザー グループは作成されましたが、このユーザー グループにはユーザーがいません。

3 dockerを使ってMySQLをインストールする

Docker を使用して MySQL サービスをインストールするのは非常に簡単です。全体的な手順は次のとおりです。

1. MySQLイメージをダウンロードする

公式の docker リポジトリにログインすると、次の URL で mysql イメージを見つけることができます: https://hub.docker.com/_/mysql?tab=tags

dockerコマンドを使用してMySQLイメージを直接ダウンロードすることもできます。

yum プル mysql:5.7.16

上記のコマンドは、MySQL5.7.16 のイメージをダウンロードすることを示しています。最後のバージョン番号を書き込まない場合は、デフォルトで最新のMySQLバージョンのイメージが取得されます。

2. MySQLを起動します。

プルが完了したら、次のコマンドで MySQL インスタンスを起動できます。

docker run -itd --name mysql_5716 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yeyazhou mysql_5716

で:

-i: コンテナを対話モードで実行する

-t: コンテナの疑似入力端子を再割り当てする

-d: コンテナをバックグラウンドで実行する

-p 3306:3306: コンテナ サービスのポート 3306 をホストのポート 3306 にマップします。外部ホストは、ホストの ip:3306 を介して MySQL サービスに直接アクセスできます。

MYSQL_ROOT_PASSWORD=yeyazhou: MySQL サービスのルート ユーザーのパスワードを設定します。

3. コンテナの実行状態を確認する

コンテナID: コンテナID

その他の情報には、コンテナのソース イメージ、作成時間、ステータス、ポート マッピング情報、コンテナ名などが含まれます。

4. 表示するコンテナを入力します

まず、コマンドを使用してコンテナの対話型コマンド ラインに入ります。

docker exec -it mysql_5716 /bin/bash

結果は以下のとおりです

ルート@8c388ccfb761:/# ls -l
合計 72
drwxr-xr-x 1 ルート ルート 4096 2016年11月8日 bin
drwxr-xr-x 2 ルート ルート 4096 2016年9月12日 ブート
drwxr-xr-x 5 ルート ルート 360 8月11日 11:41 dev
drwxr-xr-x 2 ルート ルート 4096 2016 年 11 月 8 日 docker-entrypoint-initdb.d
lrwxrwxrwx 1 root root 34 2016年11月23日 entrypoint.sh -> usr/local/bin/docker-entrypoint.sh
drwxr-xr-x 1 ルート ルート 4096 8月11日 11:41 など
drwxr-xr-x 2 ルート ルート 4096 2016年9月12日 ホーム
drwxr-xr-x 1 ルート ルート 4096 2016年11月8日 lib
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 lib64
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 メディア
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 mnt
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 opt
dr-xr-xr-x 104 ルート ルート 0 8月11日 11:41 proc
drwx------ 1 ルート ルート 4096 8月11日 11:49 ルート
drwxr-xr-x 1 ルート ルート 4096 2016年11月8日 実行
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 sbin
drwxr-xr-x 2 ルート ルート 4096 2016年11月4日 srv
dr-xr-xr-x 13 ルート ルート 0 7月19日 02:47 sys
drwxrwxrwt 1 ルート ルート 4096 8月11日 11:41 tmp
drwxr-xr-x 1 ルート ルート 4096 2016年11月23日 usr
drwxr-xr-x 1 ルート ルート 4096 2016年11月8日 var

コンテナの対話型コマンドラインが入力されていることがわかります。前の root@8c388ccfb761 の @ 記号の後の文字列がコンテナ ID です。

5. 接続文字列を使用してMySQLに接続する

ルート@8c388ccfb761:/usr/local# mysql -uroot -pyeyazhou -h127.0.0.1
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは16です
サーバーバージョン: 5.7.16 MySQL コミュニティサーバー (GPL)

Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。

OracleはOracle Corporationおよびその関連会社の登録商標です。
その他の名称は各社の商標である場合があります。
所有者。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
|システム|
+--------------------+
セット内の 4 行 (0.00 秒)

6. 別のMySQLコンテナを起動する

[root@VM-0-14-centos ~]# docker run -itd -p 3307:3306 --name mysql_5716_2 -e MYSQL_ROOT_PASSWORD=yeyazhou mysql:5.7.16
  e5e0f9a14462261d01307c4d0891587acce90e4ffd33e434878f311bf98d4f22
 
[root@VM-0-14-centos ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
e5e0f9a14462 mysql:5.7.16 "docker-entrypoint.s..." 8 秒前 6 秒前にアップ 0.0.0.0:3307->3306/tcp mysql_5716_2
8c388ccfb761 mysql:5.7.16 "docker-entrypoint.s..." 25 時間前 25 時間前 0.0.0.0:3306->3306/tcp mysql_5716

上記は、docker に MySQL をデプロイする例の詳細です。docker に MySQL をデプロイする詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • .Net6 プロジェクトを Docker にデプロイする
  • Docker を使用して Microsoft Sql Server を展開するための詳細な手順
  • Docker で MySQL をデプロイする詳細なプロセス (Docker でデプロイされる一般的なアプリケーション)
  • Docker デプロイメント MySQL8 クラスター (マスター 1 台とスレーブ 2 台) の実装手順
  • Linux システム Docker への ASP.NET Core アプリケーションのデプロイのプロセス分析
  • Linux CentOS の Docker に Asp.Net Core (.Net6) をデプロイする
  • docker を使用して Asp.net コア アプリケーションをデプロイするための完全な手順
  • DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

<<:  backgroundImage を使用して画像カルーセルの切り替えを解決する詳細な説明

>>:  Html、sHtml、XHtml の違いのまとめ

推薦する

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

CSS における @ の使用法の概要 (例と説明付き)

@ ルールは、CSS の実行または動作に関する指示を提供する宣言です。各宣言は @ で始まり、その...

Xtrabackup を使用して MySQL をバックアップおよび復元する方法

目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

MySQL Community Server 5.6.39 のインストール方法

この記事では、MySQLのダウンロードとインストールの詳細なチュートリアルを記載しています。具体的な...

Linux で毎日データベースの自動バックアップを設定する方法

この記事では、Centos7.6 システムと Oracle11g を例に挙げます。 1. まずデータ...

MySQL 実践演習 シンプルなライブラリ管理システム

目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...

Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明

1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...

シンプルなスネークゲームを実現するネイティブjs

この記事では、スネークゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容...

ウェブサイトはいつ広告を掲載すべきでしょうか?

最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...

CSS仕様 BEM CSSとOOCSSサンプルコード詳細説明

序文プロジェクト開発中、各人のコーディング習慣が異なるため、記述された CSS コードは十分に構造化...

webpackでvue環境を構築する際の異常なエラーを解決する

目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...

複数の古いプレーヤーの埋め込みコード

ウェブページに表示されるプレーヤーは、WMP/RealPlayer/Flash Player に過ぎ...

よく使われるJavaScript配列メソッド

目次1. フィルター() 2. 各() 3. いくつか() 4. すべて() 5. 減らす() 6....

MySQL 8.0.15 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...