@0314masaa

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

docker-compose up -d のerrorについて

解決したいこと

macのterminalでdocker-compose up -d をしたら、
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use
というerrorが出ました。

ポート番号が使われているとの事で、
sudo lsof -i -P | grep "LISTEN"
で調べた所、

mysqld 374 _mysql 22u IPv6 0x196dce31e39ae805 0t0 TCP *:33060 (LISTEN)
mysqld 374 _mysql 24u IPv6 0x196dce31e39af5c5 0t0 TCP *:3306 (LISTEN)

が出てきました。
使用箇所の削除をするために、コマンドを打ちましたが、
sudo kill <3306>      
結果->zsh: parse error near `\n'
sudo systemctl stop mysqld
結果->sudo: systemctl: command not found
kill -9 3306
結果->kill: kill 3306 failed: no such process

と、上手くいかず。。
初心者の為、分かりづらく拙い内容かもしれませんが、
解決方法がわかる方、似たような状態から進められた方いらっしゃいましたら、
ご回答よろしくお願い致します、

0 likes

4Answer

0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: address already in use

なので自分の端末の3306ポートが使用中ですよという所までは理解できていると思います。

sudo lsof -i -P | grep "LISTEN"

で調べてプロセスを殺したいという所までは出来ていると思いますが、プロセスIDの指定が間違っています。

lsof -i -Pとすると分かりますが、

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

なのでプロセスID(PID)は2番目のものと分かります。

$ kill -9 374

上の例だとこうすれば消せた気がします。が、そもそもポートが被らなければ良いので、docker-compose.yml側でmysqlのサービスだと思いますが、これのホスト側のポートを変えればいいと思います。

docker-compose.yml
  ...
  mysql:
    ports:
      - 12345:3306
0Like

Comments

  1. @0314masaa

    Questioner

    ご回答ありがとうございます。
    2通り試してみましたが、
    $ kill -9 374
    結果 -> kill: kill 374 failed: operation not permitted
    シングルクオーテーションがなかったからかと思い、足してみましたが、
    $ kill -9 '374'
    結果 -> kill: kill 374 failed: operation not permitted

    ...
    mysql:
    ports:
    - 12345:3306
    結果->
    zsh: command not found: ...
    zsh: command not found: mysql:
    zsh: command not found: ports:
    zsh: command not found: 12345:3306

    となり、上手くいきませんでした。
    すみません💧

もし docker-compose up -d の実行が2回目だとしたら1回目に起動した mysql コンテナがまだ動いています。 docker-compose stop で止めてください。

0Like

Comments

  1. @0314masaa

    Questioner

    ご回答ありがとうございます。
    もし3回、4回と押してしまった場合も、
    docker-compose stop
    で、解決出来ますでしょうか。
    また、docker-compose stop をコマンド入力後は、
    再度docker-compose up -d を入力しなくても大丈夫なのでしょうか。

    すみませんが、ご助言よろしくお願い致します。
  2. docker-compose up -d は2回目からエラーが出るはずで、それ以上実行しても変わりはありません。 docker-compose stop を一度実行すれば止められます。

    止めると docker-compose up -d を実行する前の状態に戻ります。必要なら再度実行してください。
  3. なお2回目というのは Mac を起動してから2回目のことです。 Mac を再起動すると docker-compose up -d を実行する前の状態に戻るので、再起動後に初めて実行したときは1回目と数えます。
  4. @0314masaa

    Questioner

    分かりやすい回答ありがとうございます!!

This answer has been deleted for violation of our Terms of Service.

Qiita内で、 
「kill -9 PID値でOperation not permittedってなった時の対処法」
という記事内で、
sudo kill 'pidの指定' でkill出来るとあったので試してみたところ、
上手く削除出来ました!!
回答して頂いた方ありがとうございました!!

0Like

Your answer might help someone💌