首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在Docker中有两个MariaDb镜像,但有一个配置

问我在Docker中有两个MariaDb镜像,但有一个配置
EN

Stack Overflow用户
提问于 2019-03-24 21:37:31
回答 2查看 84关注 0票数 0

我使用docker-compose构建了一个配置:

db: build: context: ./context dockerfile: /path/Dockerfile image: mariadb:dev

在Dockerfile中:

FROM mariadb:latest MAINTAINER Billy COPY ./ /var/lib/mysql

在启动docker-compose up之后,我有:

REPOSITORY TAG mariadb dev mariadb latest

为什么我有一个镜像mariadb:最新的,而不仅仅是mariadb:dev?

谢谢你的帮助(我是码头新手,我的英语很抱歉)

EN

回答 2

Stack Overflow用户

发布于 2019-03-24 21:47:28

代码语言:javascript
复制
db:
  build:
    context: ./context
    dockerfile: /path/Dockerfile
  image: mariadb:dev

这告诉Docker您希望构建一个镜像并将其命名为mariadb,并将其标记为dev (=mariadb:dev)。

您的Dockerfile文件基于带有标签latest (FROM mariadb:latest)的镜像mariadb。

因此,Docker首先必须从docker集线器中拉出mariadb:latest。在此步骤之后,此映像将保存在您的本地注册表中。构建映像(mariadb:dev)后,此映像也在本地注册表中。

这就是为什么你在你的注册表中有这两个。mariadb:latest是您的镜像的基础镜像。因此,Docker必须在Dockerfile的第一步中提取该镜像。所以它就在你的注册表里。

官方的Docker docs中记录了这种行为

如果既指定映像又指定构建,则Compose将使用webapp和在image中指定的可选标记来命名构建的映像:

代码语言:javascript
复制
build: ./dir 
image: webapp:tag

这将产生一个名为webapp和标签标签的图像,它是从./dir构建的。

我认为您真正想要的是使用docker集线器中的mariadb:latest镜像,并将修改后的文件作为卷包含进来,而不是构建新的镜像。

这看起来类似于您的docker-compose.yml中的以下内容(有关如何使用它的详细信息,请参阅docs of the maria db image ):

代码语言:javascript
复制
db:
   image: mariadb:latest
   volumes:
      - "<relativePath>:/var/lib/mysql"
   environment:
      - MYSQL_ROOT_PASSWORD=password

其中,<relativePath>是相对于您的docker-compose.yml所在位置/执行docker-compose up的位置的相对路径。例如,您可以创建一个子文件夹"mysql“,其中包含您希望在容器内挂载到/var/lib/mysql的所有文件,然后使用- "mysql:/var/lib/mysql"。(通过使用.,您将把docker-compose.yml和同一文件夹中的所有内容挂载到容器内的/var/lib/mysql中)

票数 1
EN

Stack Overflow用户

发布于 2019-03-25 00:07:07

您拥有这两个图像,因为mariadb:latest是您的自定义图像的中间图像-在执行您的两个定制层(分别为MANTAINER和COPY )之前,必须具有它。

将您的自定义图像视为一堆图像:

  • 来自Docker Hub的mariadb:latest镜像(我假设)首先堆叠
  • MANTAINER中间层(MANTAINER Billy)然后是
  • A<代码>D12中间层(COPY ./ /var/lib/mysql)最后是

然后,docker创建一个标记(mariadb:dev)并将其指向新创建的图像。

因此,更具体地说,Docker需要在其本地缓存中具有mariadb:latest,以便能够构建您的镜像。

您可以在the official Docker documentation中找到有关这方面的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55324374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档