(Dockerやmysqlの管理に関する知識が限られているため、おそらく馬鹿げた質問ですが、この問題に一晩を費やしたので、あえて質問します。)
一言で言えば
mysqlをdockerコンテナーで実行し、ホストからそれに接続したいと考えています。これまでのところ、私が達成した最高のものは:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
もっと詳しく
私は以下を使用していますDockerfile
:
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
このファイルがあるディレクトリで、イメージを正常にビルドして実行できます。
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
画像に添付すると、問題なく動作するようです。
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
しかし、私はホストからそれほど多くの成功を収めていません:
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
さらに詳細
- 私のように見える質問があるのを見てきました。しかし、それは同じではありません(そして、とにかく答えはありません)
- mysql専用の画像があることを確認しましたがあることを確認しましたが、それ以上の成功はありませんでした
- 私は
grep -v
変な感じがあります。確かに、よりクリーンな方法があるかもしれません。しかし、自分の画像を添付すると、実際に期待どおりに機能する(つまり、を削除したbind-address
)ことがわかります。そして、私はコンテナで見ることができます/var/log/mysql/error.log
:
サーバーのホスト名(バインドアドレス): '0.0.0.0'; ポート:3306-「0.0.0.0」は「0.0.0.0」に解決されます。IPで作成されたサーバーソケット: '0.0.0.0'。