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

推薦する

CD コマンドを使わずに Linux でディレクトリ/フォルダに入る方法

ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...

Jenkins の紹介と Docker で Jenkins をデプロイする方法

1. 関連概念1.1 Jenkins の概念: Jenkins は、使用されるプラットフォームに関係...

MySql 共通クエリコマンド操作リスト

MYSQL でよく使用されるクエリ コマンド: mysql> select version()...

MySQL の乗算と除算の精度の不一致の問題 (除算後の小数点以下 4 桁)

質問今日、プロジェクト関数を書いていたとき、金額の統計計算を行い、単位を変換する必要がありました。そ...

CSS子要素選択親要素の実装

通常、CSS セレクターは上から下に選択し、親要素を介して子要素を選択します。では、子要素を介して親...

mysql スケジュールタスク (イベント イベント) の詳細な説明

1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...

さまざまな種類のMySQLインデックス

インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...

Navicat PremiumでSQLファイルをインポートする方法

今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...

MySQL で複数のフィールドを連結する詳細な例

MySQL クエリ結果の行フィールドの結合は、次の 2 つの関数を使用して実装できます。 1. co...

Vue.set() と this.$set() の使い方と違い

開発に Vue を使用する場合、次のような状況に遭遇することがあります。Vue インスタンスを生成し...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

Docker で MySQL データベースを使用して LAN アクセスを実現する

1. MySQLイメージを取得する docker pull mysql:5.6注: mysql5.7...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

写真のプレビューとアップロード機能を実現するhtml+css+js

はじめに: Web ページを作成するときに、画像をアップロードする必要がある場合がよくあります。画像...