2016-08-19 8 views
0

私はmysqlのコンテナを試しています。そのコンテナのCMDパラメータはmysqldです。したがって、以下のパラメータは同じです。mysqlデーモンを実行している `/ bin/bash -c`のドッカー

docker run --name db -e MYSQL_ROOT_PASSWORD=proot --rm mysql 
docker run --name db -e MYSQL_ROOT_PASSWORD=proot --rm mysql mysqld 

これで、複数のコマンドを使用するときに問題が発生しました。ドッカーコンテナで複数のコマンドを使用するには、/bin/bash -cを使用する必要があります。私はmysqldコマンドを使用して例示:

docker run --name db -e MYSQL_ROOT_PASSWORD=proot --rm mysql /bin/bash -c "mysqld" 

このコマンドは私に次のエラーがスローされます。

mysqld: Table 'mysql.plugin' doesn't exist 

その後、mysqlデーモンが停止し、その理由がわかりません。

私は最初にデアモンを開始してから何か他のものを起動するような複数のコマンドを使用したいので、/bin/bash -cの構文を使用します。mysqld & some other command私はこの問題の回避策として別のコンテナを作成したくありません。

サイドノート:私はトラブルシューティングのため--rmを使用しています。それ以外の場合は、-dを使用してコンテナを取り外します。

答えて

0

answer from the github communityです。彼らはmysqldは引数あるinitdb場合entyrypointスクリプトのみがないと述べました。つまり、/docker-entrypoint-initdb.d/を使用して.shまたは.sqlファイルを置くと、mysqlが既に実行されているときにファイルが実行されます。

したがって、最終的な答えは、ディレクトリ-v /local/dir:/docker-entrypoint-initdb.d/を初期化するスクリプトに追加することです。例:

docker run --name db -v $(pwd):/docker-entrypoint-initdb.d/ -e MYSQL_ROOT_PASSWORD=proot --rm mysql 
0

mysql DockerイメージのCMDmysqldですが、ENTRYPOINT ["docker-entrypoint.sh"]もありますが、これはbashコマンドでは機能しない可能性があります。

他のプロセスを実行すると、Dockerコンテナのベストプラクティスではなく、このイメージを使用する点が多少犠牲になりますが、デバッグするのが難しく難しくなりますので、回避策 " - 回避しようとしているのは回避策です。

ENTRYPOINTを上書きするか、カスタムDockerファイルを作成する必要があります。

関連する問題