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

执行docker-compose up时提示找不到docker-database镜像的问题求助

Docker构建后提示找不到镜像的问题

我在用Docker时遇到了问题,执行docker-compose up --build命令后,出现了找不到自动构建镜像的错误。

docker-compose.yml 配置

services:
  web-server:
    build:
      context: ./apache
    volumes:
      - ../src:/var/www
      - ./conf:/etc/apache2/sites-enabled
    ports:
      - "80:80"
      - "443:443"
    networks:
      - internal

  database:
    build:
      context: ./database
    ports:
      - "3306:3306"
    networks:
      - internal


networks:
  internal:

执行命令后的错误信息

[+] Running 2/4
 ✔ database                       Built                                                                                                                                            0.0s
 ✔ web-server                     Built                                                                                                                                            0.0s
 - Container docker-web-server-1  Creating                                                                                                                                         0.0s
 - Container docker-database-1    Creating                                                                                                                                         0.0s
Error response from daemon: {"message":"No such image: docker-database"}

补充Dockerfile内容

./apache/Dockerfile

FROM ubuntu

RUN apt update -y && apt upgrade -y
RUN apt install -y apache2  php

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

WORKDIR /var/www

CMD ["apachectl"]

EXPOSE 80 443

./database/Dockerfile

FROM ubuntu

RUN apt update -y && apt upgrade -y
RUN apt install -y mysql-server

CMD ["mysqld_safe"]

EXPOSE 3306

问题解决办法

出现这个问题的核心原因是Docker Compose自动构建镜像时,镜像命名出现了匹配问题,导致daemon找不到对应镜像。给你两个实用的解决方法:

  • 明确指定镜像名称
    在docker-compose.yml的每个服务下添加image字段,手动指定镜像名称,避免自动命名的歧义:
services:
  web-server:
    build:
      context: ./apache
    image: local-web-server  # 新增字段,自定义镜像名
    volumes:
      - ../src:/var/www
      - ./conf:/etc/apache2/sites-enabled
    ports:
      - "80:80"
      - "443:443"
    networks:
      - internal

  database:
    build:
      context: ./database
    image: local-database  # 新增字段,自定义镜像名
    ports:
      - "3306:3306"
    networks:
      - internal

修改后重新执行docker-compose up --build即可。

  • 清理缓存后重建
    如果是旧缓存或残留配置导致的问题,先清理所有相关镜像和容器,再重新构建:
docker-compose down --rmi all
docker-compose up --build

--rmi all会彻底删除项目关联的镜像,避免缓存干扰。

额外提个小建议:你当前用ubuntu作为基础镜像,其实可以换成官方的专用镜像(比如Apache用httpd、MySQL用mysql官方镜像),这些镜像体积更小、配置更标准,运行起来也更稳定。

内容的提问来源于stack exchange,提问作者Kostya Bronshteyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:17:13