繁体   English   中英

为什么 docker compose 试图拉取一个镜像而不是创建一个新的镜像?

[英]Why is docker compose trying to pull an image instead of creating a new one?

我在我的 Ubuntu 服务器上重新安装了 docker,现在我正在尝试使用docker-compose重建和运行一个 docker 容器,但似乎在拉取时出现错误。 我该如何解决这个问题,为什么会发生这种情况?

码头工人组成:

version: "3.7"

networks:
  default:
    external: true
    name: network

services:
  mysql:
    ports:
      - "13306:3306"
    container_name: mysql
    #environment:
    #  - MYSQL_ROOT_PASSWORD=dbPass
    image: mysql

Dockerfile:

FROM mysql:8

ENV MYSQL_DATABASE db
ENV MYSQL_ROOT_PASSWORD=dbPass

COPY ./scripts/ /docker-entrypoint-initdb.d/

输入命令: docker-compose up --build

错误信息:

Pulling mydb (mysql:)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

Continue with the new image? [yN]n
ERROR: pull access denied for mysql:, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

似乎当您删除使用卷创建的图像时,您忘记也删除该卷。 我认为有两种解决方案:

  1. 使用docker volume rm specific-volume-name删除您的卷(请参阅此处
  2. 通过添加-V选项使用新卷重新创建构建(请参阅此处

我忘记在撰写文件中添加构建属性。 这导致 docker 尝试根据定义的内容获取图像。

version: "3.7"

networks:
  default:
    external: true
    name: network

services:
  mysql:
    ports:
      - "13306:3306"
    container_name: mysql
    image: mysql
    build: .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM