执行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
相关产品推荐
相关产品推荐

