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 エンコードの問題の解決策

推薦する

JS オブジェクト配列の重複排除のための 3 つの方法の例と比較

目次1. 重複排除前後のデータの比較2. 使い方1. フィルターとマップを使用する2. 削減を使用す...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

1. ユーザーを作成します。注文: 'password' によって識別される ...

vue.js を使用してドラッグ アンド ドロップ機能を実装する方法

序文ドラッグ アンド ドロップ機能を追加すると、プログラムがより自然でユーザーフレンドリーになります...

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by 問題を解決する

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by の問題...

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

MySQL 8.0.12 のダウンロードとインストールのチュートリアルを録画し、全員と共有しました。...

Linux ファイル記述子、ファイルポインタ、および inode の詳細

目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...

CentOS で Mysql を再起動するさまざまな方法 (推奨)

1. rpm パッケージ経由でインストールされた MySQL サービスmysqldを再起動 /et...

Vue の計算プロパティとプロパティリスニングについての簡単な説明

目次1. 計算プロパティ構文: 1. 省略形:文法: 2. 文章を完成させる: 2. モニタリング(...

一般的なブラウザ互換性の問題(概要)

ブラウザの互換性とは、スタイルの互換性 (CSS)、インタラクションの互換性 (JavaScript...

TypeScript の条件型に関する詳細な読書と実践記録

目次ジェネリック型での条件型の使用ツールタイプ脱出ポッド矢印関数で条件型を使用する型推論による条件型...

CSS スタッキングと Z インデックスのサンプルコード

カスケードとカスケードレベルHTML 要素は 3 次元の概念です。水平方向と垂直方向に加えて、「Z ...

JavaScript初心者がよく犯す間違い

目次序文undefined と null の混同紛らわしい数値の加算と文字列の連結戻り文の改行の問題...

CSS で TikTok テキスト揺れエフェクトを実装する例

日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...