Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

1. MacへのDockerのインストール

Mac版をダウンロードするには、Docker公式サイト:https://www.docker.com/get-startedにアクセスしてください。ダウンロードする際にはDockerアカウントにログインする必要があるため、まずはDockerアカウントを登録する必要があります。このアカウントは、後でアプリケーションを起動するときにログインするためにも使用できます。

ダウンロードするには、Docker アカウントにログインしてください。ダウンロード後、Docker.dmg ファイル (523.1 MB) が取得されます。これをダブルクリックしてインストールします。インストール後、以下に示すように、アイコンをクリックして Docker を起動します (whaly はいたずら好きなクジラです)。

次のステップが完了すると、上にこのアイコンが表示されますコンテナがジャンプを停止すると、起動は完了です。

より早くイメージをプルするために、国内のイメージソースとして設定することができます。アイコンをクリックし、「環境設定」→「デーモン」を選択し、レジストリミラーに国内のDockerコンテナプロキシアドレスを入力します。ここではAlibaba Cloudが推奨されていますが、NetEase Cloudも使用できます。ここでは、独自のAlibaba Cloudコンテナイメージサービスを取得する方法のデモンストレーションを示します。

Alibaba Cloud の公式 Web サイト https://www.aliyun.com/ にアクセスし、アカウントにログインします。管理コンソール --> 製品とサービス --> Elastic Compute --> Container Mirroring Service --> Mirror Accelerator に移動し、独自のアクセラレータ アドレスをレジストリ ミラーにコピーして、Docker を再起動します。

2. Win 10 システムでの Docker のインストール

Dockerの公式サイトにアクセスしてください: https://www.docker.com。Dockerアカウントをお持ちの場合は、まずログインしてをクリックし、 (以前にログインしたことがない場合は、ここでログイン ページがポップアップ表示されます。) ポップアップ ページで [Get start with Docker Desktop] をクリックしてダウンロードを開始します。

真ん中の選択肢を覚えておくWindows版をダウンロードしてください。ダウンロードが遅い場合があります。ダウンロードが遅い場合は、http://get.daocloud.io/#install-docker-for-mac-windowsからダウンロードできます。

ここで、Win 10システムはHyper-Vをオンにして、再起動を確認することができます。

Windows の機能をオンまたはオフにする

ただし、Hyper-V が有効になっている場合、VMware Workstation はイメージを再起動するときに次のエラーを表示し、起動に失敗します。通常通り使用したい場合は、このオプションをキャンセルし、安全のために PowerShell (スタート -> 右クリック -> Windows PowerShell 管理者) でbcdedit /set hypervisorlaunchtype offを実行してください。 VMware Workstation を通常通り使用するには、システムを再起動します。

bcdedit /set ハイパーバイザー起動タイプをオフにする

最後に、ダウンロードした Docker for Windows Installer.exe をダブルクリックしてインストールします。

インストールが完了すると、システムを再起動するように求められます。小さな Docker アイコンがシステム タスクバーに表示されます。プロンプトに従って PowerShell に入力します (Shift キーを押しながら右クリックして選択します)。

docker情報
docker バージョン
ドッカーps
Docker イメージ
docker で hello-world を実行する

3. MySQLをインストールする

Alibaba Cloudコンソールの画像検索で公式mysqlを検索することもできます。

非常に詳細なインストール手順が記載されている最初のものを選択します。また、サポートされているバージョン (ラベル) が 8.0.12 であることもわかります。今回はこのバージョンをインストールします。

インストールの前に、Docker に MySQL をインストールするときにデータベース データがデフォルトでシステムのローカル ファイルにマップされる理由を理解するために、ドキュメントの「データの保存場所」セクションの説明を読むことをお勧めします。

インストール方法は多数あります。ここでは、次のコマンドを使用して自動的にインストールします。

docker run --restart=always --name mysql8.0 -p 3306:3306 -v ~/soft/mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=**** -d mysql:8.0.12 --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci

パラメータの説明: より詳しいパラメータの説明については、公式サイトのdocker runの説明(docker runの説明)を参照してください。

--restart=常にDockerの後にコンテナの自動起動を設定する
- 名前このコンテナの名前を設定する
-p 3306:3306前面は露出ポート、背面はコンテナ内のサービスポートです
-v ローカルディレクトリ: コンテナパスこのパラメータを指定して、コンテナのマウント ポイントを、MySQL データを含むコンテナのデータを保存するローカル フォルダーに明示的にマップするのが最適です。
-e MYSQL_ROOT_パスワードルートユーザーのパスワードを設定する
-d mysql:タグインストールする MySQL のバージョンを指定します。タグでは、公式ドキュメントで提供されているオプションのバージョンを選択できます。

MySQLコンテナ情報を表示する

$ docker ps 

ツール(Navicat)を使用して接続する

接続は成功しました。バージョンを確認してください。これも先ほどインストールした 8.0.12 バージョンです。

[注]ここで注意すべき点は、公式の MySQL Dockerfile は Debian システムを使用しており、以下に示すように、デフォルトでは言語と utf8 文字セットをサポートしていないことです。

docker で mysql cli コマンドを使用しない場合は、公式イメージを直接使用してもまったく問題ありません。ただし、docker で mysql cli コマンドを使用する必要がある場合、公式のものでは中国語の文字を入力できず、表示される中国語が文字化けします。今回は、MySQL が公式に提供している Dockerfile.debian (https://github.com/docker-library/mysql) にアクセスし、バージョン 8.0 をローカル コンピューターにダウンロードし (バージョン 8.0 未満の Dockerfile.debian、docker-entrypoint.sh、config をダウンロードする必要があります)、次のように Dockerfile を変更します。ポイントは、utf8 エンコーディングのサポートを追加し、ローカル言語環境を en_US.utf8 に設定することです (最初はこれで十分です)。

#
# 注意: この DOCKERFILE は「apply-templates.sh」によって生成されます
#
# 直接編集しないでください。
#
# システムは Debian の buster-slim イメージを使用します FROM debian: buster-slim
 
# uft8 環境をセットアップする RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
環境変数LANG en_US.utf8
 
# mysqlユーザーとグループを追加します。RUN groupadd -r mysql && useradd -r -g mysql mysql
 
apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/* を実行します。
 
# ルートから簡単にダウングレードできるように gosu を追加します。詳細については、https://github.com/tianon/gosu/releases を参照してください。
環境 GOSU_バージョン 1.12
実行set -eux; \
	savedAptMark="$(apt-mark showmanual)"; \
	apt-getアップデート; \
	apt-get install -y --no-install-recommends ca-certificates wget; \
	rm -rf /var/lib/apt/lists/*; \
	dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
	wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
	wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
	GNUPGHOMEをエクスポートします。"$(mktemp -d)"; \
	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
	gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
	gpgconf --kill すべて; \
	rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
	apt-mark auto '.*' > /dev/null; \
	[ -z "$savedAptMark" ] || apt-mark マニュアル $savedAptMark > /dev/null; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	chmod +x /usr/local/bin/gosu; \
	gosu --バージョン; \
	誰も真実を知らない
 
mkdir /docker-entrypoint-initdb.d を実行します。
 
apt-get update && apt-get install -y --no-install-recommends \ を実行します。
# MYSQL_RANDOM_ROOT_PASSWORDの場合
		\ の
# mysql_ssl_rsa_setup の場合
		オープンSSL \
# 致命的なエラー: /usr/local/mysql/scripts/mysql_install_db を実行する前に、次の Perl モジュールをインストールしてください。
# ファイル::ベース名
# ファイル::コピー
# システム::ホスト名
# データ::ダンパー
		パール \
# .sql.xz docker-entrypoint-initdb.d ファイル用に "xz-utils" をインストールします
		xz-utils \
	&& rm -rf /var/lib/apt/lists/*
 
実行set -ex; \
# gpg: キー 5072E1F5: 公開キー「MySQL Release Engineering <[email protected]>」がインポートされました
	キー='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
	GNUPGHOMEをエクスポートします。"$(mktemp -d)"; \
	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
	gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
	gpgconf --kill すべて; \
	rm -rf "$GNUPGHOME"; \
	apt-key リスト > /dev/null
 
# mysql環境変数ENV MYSQL_MAJOR 8.0を追加します
環境変数 MYSQL_VERSION 8.0.22-1debian10
 
実行 echo 'deb http://repo.mysql.com/apt/debian/ buster mysql-8.0' > /etc/apt/sources.list.d/mysql.list
 
# ここでの「/var/lib/mysql」は、mysql-server postinst には、データベースがすでに「構成されている」こと (つまり、/var/lib/mysql/mysql にあるもの) 以外に、mysql_install_db コードパスを無効にする明示的な方法がないためです。
# また、APT を少し静かにするために debconf キーを設定しました
走る { \
		echo mysql-community-server mysql-community-server/data-dir 選択 ''; \
		echo mysql-community-server mysql-community-server/root-pass パスワード ''; \
		echo mysql-community-server mysql-community-server/re-root-pass パスワード ''; \
		echo mysql-community-server mysql-community-server/remove-test-db を false で選択します。\
	} | debconf-set-selections \
	&& apt-get アップデート \
	&& apt-get install -y \
		mysql-community-client="${MYSQL_VERSION}" \
		mysql-community-server-core="${MYSQL_VERSION}" \
	&& rm -rf /var/lib/apt/lists/* \
	&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
	&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# 実行時に mysqld インスタンスが持つ UID に関係なく、/var/run/mysqld (ソケットおよびロック ファイルに使用) が書き込み可能であることを確認します。
	&& chmod 1777 /var/run/mysqld /var/lib/mysql
 
#マウントポイントを /var/lib/mysql として指定するか、docker run -v ホストディレクトリ: コンテナ内のマウントポイント VOLUME /var/lib/mysql を実行します。
 
# 設定ファイル
config/ /etc/mysql/ をコピーします
docker-entrypoint.sh /usr/local/bin/ をコピーします。
# 下位互換性
ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh を実行します。
# この機能は CMD に似ていますが、より柔軟で複雑です。使用後、CDM の内容は ENTRYPOINT 命令 ENTRYPOINT ["docker-entrypoint.sh"] にパラメータとして渡されます。
 
# 実行時に公開されるポートを宣言します (port1 port2 …)。ただし、この構成されたポートは実行時にはデフォルトでは公開されないため、実行時に指定する必要があります。
エクスポーズ 3306 33060
コマンド ["mysqld"]
 

以下のコマンドを実行してイメージのビルドを開始します。ここで、-f パラメータは Dockerfile ファイルを Dockerfile.debian として指定するために使用されます。デフォルトのファイル名を使用する場合は、指定する必要はありません。

ビルドは mysql-utf8:8.0.22 です。

ビルドが成功すると、docker images を通じてビルドしたばかりの mysql イメージを表示できます。

最後に、このイメージを使用して次のコマンドでコンテナを起動します。

docker run --name mysql8.0 -p 33307:3306 -v /u01/docker-mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=ルートユーザーのパスワード -d mysql-utf8:8.0.22 --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci

コンテナに入った後、utf8がすでにサポートされていることがわかりました

Linuxシステムに直接mysql5.Xまたは8.Xバージョンをインストールする場合は、私の別のブログ「Centos7環境でのmysql 5.7 / mysql 8.0のオフラインインストール」を参照してください。

参考: https://hub.docker.com/r/_/mysql/

Windows/Mac に Docker を使用して MySQL (utf8 を含む) をインストールする方法についてはこれで終わりです。Docker を使用して MySQL をインストールする方法についての詳細は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の group by に関する簡単な説明
  • MySQLでインデックスエラーが発生する状況について簡単に説明します
  • MySQLデータベースインデックスの左端一致原則
  • MySQL のインデックス有効条件とインデックス無効条件の結合
  • MySQLの整数および文字列インデックスの無効化または暗黙的な変換に関する簡単な説明
  • mysql5.7のインストールとNavicateの長期無料利用の実施手順
  • GinとMySQLを使ったシンプルなRestfulスタイルAPIの実装例を詳細に解説
  • MySQL での order by の使用に関する詳細
  • MySQL での正規表現の使用に関する詳細

<<:  MySQL データベース グループ クエリの group by ステートメントの詳細な説明

>>:  IE6 で JS エラーが発生し、CSS が適用されない HTML エンコードの問題の解決策

推薦する

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

CSSはメッセージパネルをスライドするWebコンポーネント機能を実装します

みなさんこんにちは。私と同じように混乱している方はいらっしゃいませんか。CSS は簡単に始められます...

HTML テーブル マークアップ チュートリアル (41): テーブル ヘッダーの幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、ヘッダーの幅と高さはコンテンツに応じて自動的に調整されます。ヘッダーの幅と高さを手動...

Hadoop を使用せずに Linux 環境に Spark のスタンドアロン バージョンをインストールする方法

ビッグデータはますます注目を集めており、ビッグデータのいくつかの構成要素に精通していないと、自慢でき...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

Vueにおけるキーの役割と原理の詳細な説明

目次1. 結論から始めましょう2. キーの役割2.1 例2.2 上記の例を修正する2.3 例を再度修...

ウェブサイトのフッター沈下現象に対する3つの解決策を詳しく解説

背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...

Win7 インストール MySQL 5.6 チュートリアル図

目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...

MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録

1 MySQL5.6 1.1 関連パラメータMySQL 5.6 では、innodb_undo_dir...

VMware 15.5 バージョンのインストール Windows_Server_2008_R2 システム チュートリアル図

1. VMware 15.5から新しい仮想マシンを作成する1. VMware を開き、ホームページで...

2048 ゲームを実装するためのネイティブ js

2048ミニゲーム、参考までに具体的な内容は以下のとおりですまず、2048ゲームは16のグリッドか...

WindowsでのMySQLインストールチュートリアルの詳細な紹介

目次1. ダウンロードする前に理解しておくべき概念2. 必要なバージョンを選択する3. MySQLサ...

ARMアーキテクチャにおける関数呼び出しプロセスの簡単な分析

目次1. 背景知識1. ARM64レジスタの紹介2. STP命令の詳しい説明(ARMV8マニュアル)...

shtml includeの使い方

これを応用することで、ウェブサイトの一部の公開領域を独立したページにすることができ、その後、この技術...

Maven で tomcat8-maven-plugin プラグインを使用する詳細なチュートリアル

オンラインで多くの記事を検索しましたが、解決策は見つかりませんでした。次のように、tomcat7-m...