LoginSignup
20
14

More than 3 years have passed since last update.

dockerコンテナ起動時にOnly one usage of each socket addressというエラー

Posted at

前提と環境

私は素人です。
今回見舞われたエラーについて調べましたが、自分と同じ状況の人が見つからなかったので記事に残します。

Windows10homeでDocker for Windowsを使っています。
dockerで開発環境を作り、コンテナの最初の起動時にエラーが出ました。

つまづいたこと

$docker-compose up -dでコンテナを起動しようとしました。

$ docker-compose up -d
Creating network "learning-laravel-tdd_default" with the default driver
Creating learning-laravel-tdd_db-testing_1 ...
Creating learning-laravel-tdd_app_1        ...
Creating learning-laravel-tdd_db_1         ... error
Creating learning-laravel-tdd_db-testing_1 ... done
Creating learning-laravel-tdd_app_1        ... done
ocol/network address/port) is normally permitted.
Creating learning-laravel-tdd_web_1        ... done

ERROR: for db  Cannot start service db: Ports are not available: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
ERROR: Encountered errors while bringing up the project.

するとエラーに。
どうやらポート番号3306に何か問題があってdbコンテナを起動できないみたいです。

とりあえずCannot start service db: Ports are not availableというエラー文を調べてみました。
似たようなエラーは多かったですが私の場合はOnly one usage of each socket addressとなっている箇所がaddress already in useの人が多く微妙に違うみたいです。

でもおそらくポート番号3306が他のプログラムと被っているのだろうと思いその線で試行錯誤することにしました。

やってみたこと

$docker-compose downで1度コンテナを停止。

$netstat -ano | findstr ":3306"を実行しポート番号3306でリッスンしているプロセスを調べました。

$ netstat -ano | findstr ":3306"
  TCP         0.0.0.0:3306           0.0.0.0:0              LISTENING       5464
  TCP         0.0.0.0:33060          0.0.0.0:0              LISTENING       5464
  TCP         [::]:3306              [::]:0                 LISTENING       5464
  TCP         [::]:33060             [::]:0                 LISTENING       5464

結果PIDが5464のプロセスが怪しいとわかりました。

そこでtasklistコマンドでPIDが5464のプロセスが何か調べました。

tasklist /FI "PID eq 5464"

イメージ名                     PID セッション名     セッション# メモリ使用量
========================= ======== ================ =========== ============
mysqld.exe                    5464 Services                   0     44,404 K

どうやらこのmysqld.exeが干渉しているみたいです。

mysqld.exeって何ですか?

調べました。
調べたんですが、
拡張子.exeはexecutable(実行可能)という意味らしい。
ってことしかよくわかりませんでした。

とりあえず止めてみた

タスクマネージャーから「タスクの終了」を選択。

もう1度$docker-compose up -dコマンドを実行。

$ docker-compose up -d
Creating network "learning-laravel-tdd_default" with the default driver
Creating learning-laravel-tdd_app_1        ... done
Creating learning-laravel-tdd_db-testing_1 ... 
Creating learning-laravel-tdd_db_1         ... done
Creating learning-laravel-tdd_web_1        ... done

、、、いけたな。

なんとも腑に落ちない

表面は問題がなくなったけど、mysqld.exeって何のアプリのために動いてたのか、止めちゃって良かったのか、、、

全然すっきりしない。

かと言ってこれ以上深追いする気力と体力がないので時間に解決してもらうことにします。

20
14
1

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
20
14