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

推薦する

Google Web Fonts でウェブサイトに無制限のフォントを追加

長い間、リソースの制約により、使用できるフォントが限られていたため、Web サイトの開発は妨げられて...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

マークアップ言語 - アンカー

前: マークアップ言語 - フレーズ要素 オリジナルソース 第 7 章 アンカーHTML のリンクの...

JSはclip-pathを使用して動的領域クリッピング機能を実装します

背景今日、CodePen を閲覧していたところ、非常に興味深い効果を見つけました。 CodePen ...

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

JavaScript ES6 分割演算子の理解と応用

目次序文脱構築記号の役割使い方分割割り当ての適用アプリケーションの簡単な紹介JSONデータを抽出する...

Linux サーバーで MySQL リモート接続を有効にする方法

序文以前の非MKレコードを再編成するためのMySQLの学習説明する有効になっていない場合、データベー...

Vue スクロールダウンしてさらにデータを読み込む スクロールケースの詳細な説明

vue-無限スクロールインストール npm インストール vue-infinite-scroll -...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

ネイティブ js が携帯電話のプルダウン更新を模倣

この記事では、携帯電話のプルダウンリフレッシュを模倣したjsの具体的なコードを参考までに共有します。...

JavaScript で二分探索木を実装する

JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...

UrlRewriter のキャッシュ問題と関連する一連の調査

ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...

Dockerコンテナでユーザーを切り替えるときに権限が不足する問題を解決する方法

Docker コンテナでユーザーを切り替えると、権限が不十分であるというメッセージが表示されます。解...

ReactでCSSスタイルを動的に変更する2つの方法の詳細な説明

最初の方法: デモとしてボタンをクリックしてテキストを表示または非表示にするクラスを動的に追加します...