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 の違いのまとめ

推薦する

VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)

背景当初は VMware の公式 Web サイトから 6.7 Vcenter をダウンロードしたかっ...

Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

バックグラウンド コントローラー @RequestMapping("/getPDFStre...

フォームアクションとonSubmitの例

まず、action はフォームの属性です。HTML5 では必須の属性値として定義されています。onS...

ubuntu20.04 LTSにdockerをインストールする方法

ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...

MySQL 内部結合の使用例 (必読)

文法規則 列名を選択 テーブル名1から INNER JOIN テーブル名2 ON テーブル名1.列名...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

CentOS 7 ブートカーネルの切り替えとブートモードの切り替えの説明

Centos7 スイッチブートカーネル注: 必要に応じて、最初にyum update -yを実行して...

nginx でネストされた if メソッドを実装する方法

Nginx はネストされた if ステートメントをサポートしておらず、if ステートメントでの論理判...

Vue.jsのレンダリング関数の使い方の詳しい説明

Vue では、ほとんどの場合、テンプレートを使用して HTML を作成することを推奨しています。ただ...

プライベートレジストリ内の画像を照会または取得する方法

Dockerはプライベートレジストリ内のイメージを照会または取得するために、 docker 検索 1...

MySQL 8.0.18コマンドの詳細な説明

解凍したフォルダ C:\web\mysql-8.0.11 を開き、フォルダ内に my.ini 構成フ...

CSS の overflow: hidden の使い方 (オーバーフローの非表示とフロートのクリア)

オーバーフロー非表示指定された高さを超えるテキストや画像情報を非表示にすることを意味します。 <...

HTML タイトルに二重引用符を追加する方法

<a href="https://www.jb51.net/" title...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

MySQL 8.0.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.17のインストールと設定方法を参考までに紹介します。具体的な内容は...