@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解決方法

解決したいこと

8080portが使用中なのでポート番号の変更もしくは停止したい。

terminalからデスクトップのworkディレクトリに移動後、
docker-compose up -d した所、

発生している問題・エラー

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8080 -> 0.0.0.0:0: listen tcp 0.0.0.0:8080: bind: address already in use

8080portが使用中とのこと。

sudo lsof -i -P | grep "LISTEN"

でポート80を利用しているプロセスを確認。

発生している問題・エラー

httpd       899 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     35713 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     35714 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     35715 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     35716 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     35717 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)
httpd     42270 mm    4u  IPv6 0xb54a214563700239      0t0    TCP *:8080 (LISTEN)

8080portを使用している列を抜粋。

ここから、試したこと。

・httpdの停止↓

work % sudo systemctl stop httpd
sudo: systemctl: command not found

停止できず、、、

・port番号の変更
docker-compose.ymlのport番号を変更するためにwork内のdocker-compose.ymlに移動しようとしても移動できません。↓

 work % ls
Dockerfile		docker-compose.yml	query
default.conf		myapp
work % cd docker-compose.yml
cd: not a directory: docker-compose.yml

と上手くいきません。

初心者で拙い文章になってしまい申し訳ないですが、
解決方法のわかる方、同じような状況から脱した方、
いらっしゃいましたら、ご助言よろしくお願い致します。

0 likes

2Answer

$ docker stats --no-stream

CONTAINER ID   NAME                     CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
492b527c4223   container_name_1         0.29%  ...

とかしてみて、既に起動中のコンテナがあるのか無いのか確認するとか?
意図しないコンテナが起動されているなら一旦こうやって止めてみるとか?

$ docker stop CONTAINER_ID # CONTAINER_IDは上で表示されるランダムな文字

その後にupしたりすればいいと思いますが、元々訳がわからないなら-dオプションは使わずにupしたほうが良いと思います。訳が分かってくれば-d付ければいいですし。

1Like

Comments

  1. @0314masaa

    Questioner

    ご回答ありがとうございます。

    docker stats --no-streamで起動中のコンテナを調べてみた所、意図しないコンテナの起動はありませんでした!!

    すみません、-dオプションはどういった効果があるのでしょうか?
    教材の方が、docker-compose up -dを入力。としかなく。
    調べたのですが、調べ方が悪いのか、中々出て来ず、、、
    ご回答よろしくお願い致します。
  2. こういう風に調べられます。
    https://www.google.com/search?q=docker-compose+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89+%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88&ei=tKPmYpjAA8iK-Abg243gDQ&ved=0ahUKEwiY6qi7vKP5AhVIBd4KHeBtA9wQ4dUDCA8&uact=5&oq=docker-compose+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89+%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88&gs_lcp=Cgdnd3Mtd2l6EAM6BwgAEEcQsANKBAhBGABKBAhGGABQvARYvARglQdoAXAAeACAAfIBiAHyAZIBAzItMZgBAKABAcgBCsABAQ&sclient=gws-wiz

    どういう教材を使っているのであれ、ネットに必ず公式のドキュメントは存在していますので、教材と合わせて公式のドキュメントを見たほうが良いです。
    https://docs.docker.jp/compose/reference/overview.html

    そしてほぼすべてのコマンドは何らかのヘルプオプションがあります。

    docker-compose --help

    とやれば今回のコマンドではヘルプがでます。

    通常

    --help
    -h

    です。

    バージョンの確認も同じで

    --version
    -version
    -v

    などとやってみるとでます。
  3. @0314masaa

    Questioner

    ありがとうございます。
    教えて頂いた公式のドキュメントで-dの概要欄、確認致しました。
    今後も頑張ります!!

8080ポートが使用中なのは前回の質問と同じく docker-compose up -d を止めていないからでは? マシンを再起動してもう一度試したら解決しませんか?

停止できず、、、

(前回の質問に Mac とあったので Mac の話だと仮定しますが) systemctl は Linux 専用のコマンドなので Mac では使えません。

docker-compose.ymlに移動しようとしても移動できません。

cd はディレクトリに移動するコマンドです。 docker-compose.yml はディレクトリではなくファイルなので移動できません。適当なエディタで開いてください。

0Like

Comments

  1. @0314masaa

    Questioner

    今回もご回答頂きありがとうございます!!

    8080ポートが使用中なのは前回の質問と同じく docker-compose up -d を止めていないからでは? マシンを再起動してもう一度試したら解決しませんか?
    ↪︎docker-compose up -d は止めてあります。
    前回のport重複はmysqlのportをkillして解決しましたが、
    今回はhomebrewのportが重複しているようで、homebrewをkillせずに解決する方法を探しております💧
    質問内容が詳細不足で申し訳ありません💧


    (前回の質問に Mac とあったので Mac の話だと仮定しますが) systemctl は Linux 専用のコマンドなので Mac では使えません。
    ↪︎はいMacです。
    Macの場合で、 sudo systemctl stop httpd と同じ効果を得るコマンドは何になるでしょうか?

    cd はディレクトリに移動するコマンドです。 docker-compose.yml はディレクトリではなくファイルなので移動できません。適当なエディタで開いてください。
    ↪︎ありがとうございます!
    VSCodeで開きましたが、
    services:
     web:
      image: nginx
     ports:
    - "8080:80"

    services:
     phpmyadmin:
      image: phpmyadmin/phpmyadmin
     environment:
     - PMA_ARBITRARY=1
     - PMA_HOST=db
     - PMA_USER=${DB_USER:-phper}
     - PMA_PASSWORD=${DB_PASS:-root}
    l inks:
     - db
     ports:
     - 8081:80

    の2箇所でports:の表記がありますが、
    web:
     ports:
    - "8080:80"
    の方を
    web:
     ports:
    - "8081:80"
    に変更で問題ないでしょうか?
     ご回答よろしくお願い致します。
  2. > 今回はhomebrewのportが重複しているようで、homebrewをkillせずに解決する方法を探しております💧

    今回重複しているのは httpd のポートです。 Homebrew はパッケージマネージャ(アプリケーションやライブラリをインストールするツール)であり、それ自体はポートを開かないので関係ありません。 Homebrew で httpd をインストールしたという意味でしょうか?

    > Macの場合で、 sudo systemctl stop httpd と同じ効果を得るコマンドは何になるでしょうか?

    どうやって httpd を起動したかによってまったく異なります。仮に Homebrew でインストールしたものを brew services コマンドで起動したのであれば brew services stop httpd で止められます。

    > - "8081:80"
    > に変更で問題ないでしょうか?

    それは phpmyadmin の8081とかぶるのでダメです。8082に変更すれば起動するぶんには問題ないでしょう。
  3. @0314masaa

    Questioner

    >今回重複しているのは httpd のポートです。 Homebrew はパッケージマネージャ(アプリケーションやライブラリをインストールするツール)であり、それ自体はポートを開かないので関係ありません。 Homebrew で httpd をインストールしたという意味でしょうか?

    そうだったんですね、homebrewのportが重複しているのものだと思っておりました。
    Homebrew で httpd をインストールしております。

    >どうやって httpd を起動したかによってまったく異なります。仮に Homebrew でインストールしたものを brew services コマンドで起動したのであれば brew services stop httpd で止められます。

    ありがとうございます。
    おそらくbrew services コマンドで起動していたと思うのでこちらも確認してみます。

    >それは phpmyadmin の8081とかぶるのでダメです。8082に変更すれば起動するぶんには問題ないでしょう。

    ありがとうございます。
    8082にしてみたところ、問題なく進みました!

Your answer might help someone💌