MySQLのドッキングウィンドウの画像にsudoのナノコマンドをインストールする方法

JEETパテル:

私は、MySQLのドッキングウィンドウコンテナとDjangoアプリケーションを接続しようとしています。私はコンテナを構築するためのMySQLのMySQLすなわち8.0の最新バージョンを使用しています。私は正常にMySQLのコンテナを構築することができましたが、私は、DjangoのデフォルトのMySQL Connectorを使用して、それを接続することはできませんよ。私は実行するとdocker-compose up、コマンドを私はエラーが下記得ます。

django.db.utils.OperationalError: (1045, 'Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')

私は解決策を探し始めとMySQLは、MySQLコネクタのほとんどサポートされておらず、デフォルトの認証プラグインに大きな変化をリリースしたことを知るようになりました。

この問題を解決するには、私は設定する必要がありますdefault-authentication-pluginmysql_native_passwordしてmy.cnfMySQLのコンテナのファイル。

私は、コマンドを使用してコンテナにログインdocker exec -it <conatiner id> /bin/bashしても見つけることができたmy.cnfコンテナ内のファイルを。

編集するmy.cnfファイルを私が使用する必要がありますnano下に述べたようにコマンドを。

nano my.cnf

しかし残念ながらnanoコマンドは、MySQLコンテナにインストールされていません。インストールするにはnano私が必要となりますsudoコンテナにインストールされています。

私がインストールしようとしたsudo上記のコマンドの下に使用してそれはうまくいきませんでした。

apt-get install sudo

エラー -

Reading package lists... Done
Building dependency tree       
Reading state information... Done

この問題を解決するために可能な解決策は何ですか。

デビッド迷路:

一般的に、あなたは、コンテナで直接編集するファイルにしようとしてはなりません。コンテナが停止して削除されたとして、これらの変更はすぐに失われてしまいます。多くのドッカーオプションが唯一の起動時に設定することができ、かつ容器にソフトウェアを更新するための標準的な方法は、新しいイメージでそれを再作成することですので、これは非常に日常起こります。あなたのケースでは、あなたはまた、ライブ編集、それはすでにそれを編集するあなたがしていることができた時間で設定ファイルを読み込む必要がありますので、メインのコンテナプロセスは、起動時に必要とする設定ファイルをすることはできません。

これを行うための正しい方法は、コンテナの起動時に変更したコンフィギュレーションファイルを注入することです。あなたがまだの場合は、画像のうち、デフォルトの設定ファイルを取得

docker run --rm mysql:8 cat /etc/mysql/my.cnf > my.cnf

そして、テキストエディタの選択を使用して、あなたのホスト上で、直接、それを編集します。あなたは、コンテナを起動すると、変更されたファイルを注入

docker run -v $PWD/my.cnf:/etc/mysql/my.cnf ... mysql:8

または、ドッカー作曲で、

volumes:
  - ./my.cnf:/etc/mysql/my.cnf

ドッカーハブmysql画像のドキュメントは、これを設定する方法のいくつかのより多くの提案を持っています。そこに「カスタムMySQLの設定ファイルの使用」を参照してください。

一方でdocker exec、非常に便利なデバッグツールです、それはあなたのコアのワークフローの一部であってはならない、と私はこのようなケースでは、それを避けるためにしようとしてお勧めします。(バインド・マウントのアプローチでは、あなたのソース管理システムに変更設定ファイルを追加し、盲目的にすることができますdocker-compose up。この詳細を知らなくても、通常のように、docker execあなたは、コンテナスタックを開始するたびに覚えていて、手で繰り返す必要があるだろうなアプローチを。)

また、あなたが必要としないことに注意してsudo、すべてのドッカーで。あなたが何かを実行することができ、すべてのコンテキスト(Dockerfilesは、docker rundocker execあなたができるようにする)、明示的にユーザーIDを指定するためのいくつかの方法がありますdocker exec -u root ...sudo一般的に、ユーザーがパスワードを有し、かつインタラクティブな本物のLinuxホストの管理に適していますが、一般的なドッカー環境に一致しない、プロンプトのようなものに依存します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=25036&siteId=1