LoginSignup
10
7

More than 5 years have passed since last update.

Dockerの公式MySQLコンテナに外部コンテナから接続できない

Posted at

記事を書いた理由

Dockerを利用してWordpressをインストールしようとしたらMySQLに接続できなかったので、その備忘録として

何が発生したか

docker run --name wordpress --link some-mysql:mysql wordpressでwordpressのコンテナが起動してすぐ終了する。
docker logs wordpressを見ると'root'@'172.17.0.3'での接続に失敗していた。

原因

MySQLの公式コンテナはbind-addressをコメントアウトしており、localhost以外のアクセスを拒否している。
https://github.com/docker-library/mysql/blob/7dea35524a41992ed669858e80c07c5d666d5426/5.7/Dockerfile#L36

対策

せめてコンテナ間でのアクセスはできるようにmy.cnfを書き換え。(Dockerコンテナは172.17.0.0/16のネットワークに所属している)

Dockerfile
FROM mysql:5.7
MAINTAINER XXX xxx@xxx.com

RUN sed -Ei 's/#bind-address*/bind-address = 172.17.0.0/16' /etc/mysql/my.cnf

あとは上記のDockerfileをビルドして起動させる。

docker build -t xxx/mysql:latest .
docker run --name mysql -d xxx/mysql
docker run --name wordpress --link mysql:mysql wordpress

そもそもの勘違い

docker run --linkをしたときの挙動を勘違いしてた。
てっきりdocker run --linkを実行すると--linkしたコンテナ内の内容を自由に使えるものかと思っていた。
実際はlinkしたコンテナのネットワークの情報が環境変数に書き出されるだけなんですね。
コンテナの利点を全く理解しないまま使ってました。自分怖い。

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7