2016-08-24 6 views
0

長いタイトルですが、十分に明示する必要があります。Dockerコンテナbashは、ソケットを介してローカルのMySQLサーバに接続できません

私はbashのとドッキングウィンドウコンテナを実行し、apt-get install mysql-server経由でMySQLをインストールする場合、次のコマンドを実行します。私ははっきりと会ってるmysql -u root -p

を:

ERROR 2002(HY000):「缶トンソケット 「/var/run/mysqld/mysqld.sock」を介してローカルのMySQLサーバに接続する(2)

同じことがインストールされ、ネットワークを使用しているほとんど何になります。

これは私が行うべきことですかEXPOSEポート3306?そのポートがホスト上(コンテナの外)で使用されているが、コンテナ内のすべてのアプリケーションがそのポートを呼び出すことを期待するとどうなるでしょうか?すなわち:12345:3306を公開中にコンテナを実行すると、loインターフェイスを使用するアプリケーションでは、ポート3306または12345が使用されますか?

この部分はかなり混乱しています。 ありがとう!

+0

これは、ネットワークソケットではなく、Unixソケットに関する苦情のようです。 (ところで、 'install'はサービスを開始しないことに注意してください。) –

+0

mysqlでpbされているようなビンゴ。私はそれが私が持っている他の問題のいくつかを解決するかどうかを二重チェックするつもりです。 –

+0

ただ好奇心から:なぜあなたは時間を構築するのではなく、実行時にmysqlをインストールしていますか? –

答えて

0

MySQL Dockerコンテナは/ var/runロックを使用していません。その代わりに、IPアドレスを明示的に指定してコンテナのアドレスを直接指定してみてください。

最初にコンテナのIPアドレスを取得します。このような何か:「mysql_db」は、あなたのMySQLのドッカーコンテナを与えてくれた名前です

export MYSQL_IP_ADDRESS=$(sudo docker inspect --format="{{ .NetworkSettings.IPAddress }}" mysql_db) 

あなたのIPアドレスを「エコー」することができるはずです。

[email protected]:~$ echo $MYSQL_IP_ADDRESS 
172.17.121.2 

次に、コマンドラインでそのホスト名を指定します。

mysql -h $MYSQL_IP_ADDRESS -u root -p 

ポートの可視性についてのあなたの他の質問に答えるために、私はhub.docker.comの標準のmysql/mysql-serverイメージを使用していると仮定します。そのイメージは自動的に3306を公開しますが、MYSQL_ROOT_HOSTを使用してホストIPから接続できるようにする必要があります。たとえば、私のホストIPアドレスは172.17.121.1です。だから私はこのように私のコンテナを始めるでしょう:

[email protected]:~$ sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=blat -e MYSQL_ROOT_HOST=172.17.121.1 mysql/mysql-server:latest 
aa09bc5a30b8f84b68d760d828f8e451238405a177caef4ad802bef44ad43352 
[email protected]:~$ mysql -h $MYSQL_IP_ADDRESS -u root -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 3 
Server version: 5.7.17 MySQL Community Server (GPL) 

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 
関連する問題