You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose启动报错:Address already in use问题排查与解决

问题:Docker Compose启动时提示"Address already in use",端口检查无异常

环境配置文件

docker-compose.yml 内容

name: rideally-zf
services:
  zf-web:
    build:
      context: .
      dockerfile: zfweb.Dockerfile
    environment:
      - APPLICATION_ENV=local
    ports:
      - '8090:80'
    volumes:
      - ./rideallynewDesign:/var/www/html
    depends_on:
      - ra-mysql
    networks:
      custom_network:
        ipv4_address: 192.168.200.1
  ra-mysql:
    image: mysql:5.7-debian
    environment:
      - MYSQL_ROOT_PASSWORD=rideallyroot
      - MYSQL_DATABASE=rideally_rideallyin
      - MYSQL_USER=root
      - MYSQL_PASSWORD=rideally
    ports:
      - '3306:3306'
    volumes:
      - mysqlralocal:/var/lib/mysql
      - ./mysql:/docker-entrypoint-initdb.d/
    networks:
      custom_network:
        ipv4_address: 192.168.200.2
volumes:
  mysqlralocal:
networks:
  custom_network:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.200.0/24
          gateway: 192.168.200.1

zfweb.Dockerfile 内容

FROM php:5.6.40-apache

RUN echo "ServerName 192.168.200.1" >> /etc/apache2/apache2.conf
RUN a2enmod rewrite && service apache2 restart

执行命令及错误信息

执行docker compose up --build时出现报错:

PS C:\Users\kapil\dev\docker\RA-ZF> docker compose down --rmi all
[+] Running 5/5
 - Container rideally-zf-zf-web-1      Removed                                                                                                                                                                                                              0.0s 
 - Container rideally-zf-ra-mysql-1    Removed                                                                                                                                                                                                              0.0s 
 - Image rideally-zf-zf-web:latest     Removed                                                                                                                                                                                                              0.0s 
 - Image mysql:5.7-debian              Removed                                                                                                                                                                                                              0.8s 
 - Network rideally-zf_custom_network  Removed                                                                                                                                                                                                              0.2s 
PS C:\Users\kapil\dev\docker\RA-ZF> docker stop $(docker ps -a -q)    
14dcc9ec4ab1
314b1d09eea1
a388c643a3a7
11e1f378af9e
c31e64d5eb27
64c9ed6d9b18
0f1e28d9f789
8bb496ae4920
398abe872a8e
cbe7e3fc1b1f
1c5930d73610
8ebe7f359a40
0782188fa885
33b8cd078884
5a9e6bef532c
d94c188d18d0
1b2af074dfcb
e2b82377af74
PS C:\Users\kapil\dev\docker\RA-ZF> netstat -ano | findstr :3306      
PS C:\Users\kapil\dev\docker\RA-ZF> netstat -ano | findstr :3366  
PS C:\Users\kapil\dev\docker\RA-ZF> netstat -ano | findstr :80  
  UDP    [::]:52066             [2404:6800:4009:809::200a]:443                  4940
  UDP    [::]:54174             [2404:6800:4009:80e::200a]:443                  4940
 => CACHED [2/3] RUN echo "ServerName 192.168.200.1" >> /etc/apache2/apache2.conf                                                                                                                                                                           0.0s 
 => CACHED [3/3] RUN a2enmod rewrite && service apache2 restart                                                                                                                                                                                             0.0s 
 => exporting to image                                                                                                                                                                                                                                      0.0s 
 => => exporting layers                                                                                                                                                                                                                                     0.0s 
 => => writing image sha256:59424d3997e14f7a18ca5e7c6e997e3da7c8788cb372f8b5cec3aec246f6956f                                                                                                                                                                0.0s 
 => => naming to docker.io/library/rideally-zf-zf-web                                                                                                                                                                                                       0.0s 

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[+] Running 3/3
 - Network rideally-zf_custom_network  Created                                                                                                                                                                                                              0.1s 
 - Container rideally-zf-ra-mysql-1    Created                                                                                                                                                                                                              0.5s 
 - Container rideally-zf-zf-web-1      Created                                                                                                                                                                                                              0.2s 
Attaching to rideally-zf-ra-mysql-1, rideally-zf-zf-web-1
rideally-zf-ra-mysql-1  | 2023-04-02 09:59:43+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1debian10 started.
Error response from daemon: Address already in use
PS C:\Users\kapil\dev\docker\RA-ZF>

已尝试停止所有容器、检查端口占用但未发现异常,需排查哪个地址被占用及释放方法。


问题根源

你在docker-compose.yml里存在配置冲突:自定义网络custom_network的网关设置为192.168.200.1,同时又给zf-web容器分配了同一个IP地址。Docker创建自定义网桥时,网关地址是网络的预留地址,不能分配给容器使用,这直接导致了地址占用冲突。

解决步骤

方案1:更换容器固定IP

修改docker-compose.yml,给zf-web容器分配同子网内未被占用的IP,比如192.168.200.3:

zf-web:
  # 其他配置保持不变
  networks:
    custom_network:
      ipv4_address: 192.168.200.3

方案2:移除容器固定IP配置

直接删除容器的ipv4_address配置,让Docker自动分配IP:

zf-web:
  # 其他配置保持不变
  networks:
    - custom_network

ra-mysql的固定IP也可以选择保留(只要不与网关冲突)或同样移除。

重新启动容器

修改配置后执行命令:

docker compose up --build

额外验证(若问题仍存在)

检查本地网卡是否占用了192.168.200.0/24子网的地址:
在Windows上执行:

ipconfig /all

如果有网卡使用该网段的IP,停止对应服务或更换Docker子网配置即可。


内容的提问来源于stack exchange,提问作者Kapil Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:18:08