3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker ポート番号重複エラーを解消しよう

Last updated at Posted at 2023-06-09

Docker使用中にポート番号重複エラーが起こる

独学エンジニアという教材を使用しプログラミングの学習をはじめたところです。
環境構築でエラーがたくさん出たので書き残していこうと思います。

開発環境

Docker Desktop for Windows v4.19.0
Windows11 Home

エラー内容

docker compose up -d を実行するとエラーが起こります。

[+] Running 2/3
 ✔ Network part2_default  Created                                             0.0s
 ✔ Container part2-db-1   Started                                             0.7s
 - Container part2-app-1  Starting                                             0.7s
Error response from daemon: Ports are not available: 
exposing port TCP 0.0.0.0:50080 -> 0.0.0.0:0: listen tcp 0.0.0.0:50080: bind: 
An attempt was made to access a socket in a way forbidden by its access permissions.

このエラーは、すでに別のサービスやプロセスが指定されたポートを占有している場合に出てくるそうです。

調べよう

Google検索で出てきたコマンドをいろいろ試してみます。

ポート(50080)を使用しているのプロセスのIDを調べる

Get-Process -Id (Get-NetTCPConnection -LocalPort 50080).OwningProcess

→エラーが返ってきました。
ポート50080を占有しているプロセスを特定することができませんでした。

netstat -ano | findstr :50080

→何も返ってきません。

ポート50080への接続をテストする

Test-NetConnection -Port 50080

→エラーが返ってきました。
ポート50080への接続を試みますが、接続失敗。

調べた結果

すでに使用しているプロセス等はなさそうでした。

対処①効果あり - ホストネットワークサービスの再起動

1. まずDockerのコンテナを停止します。

docker compose down

2. ホストネットワークサービスを再起動します。

net stop hns

3. あらためてDockerコンテナを作成します。

docker compose build
docker compose up -d

→今回はこれで無事コンテナを作成することができました。

参考サイト

対処②効果なし - ポート番号の変更

効果のなかった方法も下記に記しておきます。

1. Dockerのコンテナを停止します。

docker-compose down

2. docker-compose.ymlを開き、ports: - "50080:80"を変更

version: "3"

services:
  app:
    build:
      context: .
      dockerfile: docker/app/Dockerfile
    ports:
      - "50081:80" #50080→50081に変更
    volumes:
      - ./src:/var/www/html
    depends_on:
      - db

  db:
    image: mysql/mysql-server:5.5.62
    ports:
      - "53306:3306"
    volumes:
      - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/db/mysql_data:/var/lib/mysql
    env_file:
      - ./docker/db/db-variables.env

3. 再起動します
→エラーは解消していませんでした。

終わりに

エラーは解消されましたが、パソコンを起動させるたびにエラーが出るので手間がかかっています。ほかに解決策が見つかったら更新します。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?