昨日プロジェクトを書いていた時に、MySQL の派生版である Percona を使う必要があったので、Docker を使ってインストールしたいと思いました。結果、一晩中泥沼にはまり込んでしまい、今朝ようやく解決しました。ここで記録しておきます。 プル後、docker imagesと入力してすべてのイメージを表示すると、表示は正常になります。 次に、次のコマンドでコンテナを作成します (実行時に改行を使用しないでください)。 docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:lates このコマンドは、percona という名前のコンテナを作成し、ローカルの /data/mysql-data ディレクトリを docker コンテナの /var/lib/mysql ディレクトリにマップしてポート 3306 を指定し、データベースのルート ユーザーのパスワードを root に設定し、最後の percona:latest で上記で取得したバージョンを指定することを意味します。 docker コンテナ内のデータベースは単なるミラーなので、実際には存在しないことがわかります。これをローカル ディレクトリにマッピングする目的は、docker によって /var/lib/mysql ディレクトリに保存されたデータを同期して、ローカルの /data/mysql-data ディレクトリに保存できるようにすることです。これにより、データが失われることがなくなり、ローカル操作が容易になります。 コマンドパラメータがわからない場合は、公式ドキュメントを読むか、説明のあるdockerビデオチュートリアルを検索してください。次に、このコンテナを起動します(docker start percona)。起動後、実行中のすべてのコンテナをdocker psで照会すると、問題が発生します。 空です。つまり、実行中のコンテナは見つかりません... 次に、実行中のコンテナと実行されていないコンテナを含むすべてのコンテナをチェックしました。 docker ps -a は次のように表示します。 ポートが正常にバインドされなかったため、実行されなかったことが判明しました。実行されるたびに自動的に終了しました。 このとき、docker ログを確認し、docker logs container id コマンドを入力すると、次のように表示されました。 注: ここでの 71 は、このコンテナの container_id の最初の 2 桁です。Docker はこの簡略化された記述をサポートしています。 ログ エラーには、コンテナ内の /var/lib/mysql ディレクトリを作成して書き込む権限がないことが示されています。 docker run -ti --rm --entrypoint="/bin/bash" percona -c "whoami && id" このコマンドはコンテナの所有者を表示するために使用され、次のように表示されます。 次に、次のように入力します (改行なし): docker run -ti --rm -v /data/mysql-data:/var/lib/mysql --entrypoint="/bin/bash" percona -c "ls -la /var/lib/mysql" このコマンドは、ローカル データ ボリュームをマッピングするときに、このディレクトリの所有者を表示するために使用されます。 これが理由です。mysql ユーザーが docker 内のディレクトリにアクセスすると、権限エラーが報告されるのはそのためです。ローカル マッピング ディレクトリの所有者は root ユーザーであり、docker コンテナ内の /var/lib/mysql ディレクトリの所有者は uid が 999 の mysql ユーザーであるためです。 問題は解決しました! 一晩中無駄にしました。Linux の権限制御に関する知識を深める必要があると言わざるを得ません! Docker がコンテナを作成する際のディレクトリ権限の落とし穴についての記事はこれで終わりです。Docker がコンテナを作成する際のディレクトリ権限についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Centos6.6 で php7 + nginx 環境をインストールする方法
目次外部キーの役割mysql 外部キー設定方法要約する外部キーの役割データの一貫性、整合性を維持し、...
目次1. トランザクションとは何ですか? 2. トランザクションに関連するステートメントは、挿入、削...
1. 事例会社のトップ以外の従業員全員を年齢別にグループ化します。 t_emp で id が存在しな...
目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...
目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...
序文:テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合...
成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...
Vite とは何ですか? (フロントエンドの新しいおもちゃです) Vite は、ネイティブ ES モ...
目次序文1. データを抽出する2. エイリアス値3. 動的プロパティ4. オブジェクトの分解における...
<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...
環境: 10.12 の新機能Python 3.6 MySQL 5.7.25 の場合ジャンゴ 2.2....
目次基本的なセレクター:レベルセレクター:属性セレクター:フィルターセレクター:フォーム属性セレクタ...
目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...
1.ファビコン.cc ico アイコンの Web サイトをオンラインで作成するには、画像をアップロー...
CSS スタイルを使用して表内のフォントを垂直方向に中央揃えする方法は次のとおりです。下図のようなカ...