首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义使用docker-compose构建的镜像的名称

如何定义使用docker-compose构建的镜像的名称
EN

Stack Overflow用户
提问于 2015-08-26 23:21:33
回答 9查看 296.1K关注 0票数 310

我正在使用创建我的开发环境。我想构建一个特定的镜像,但我不知道如何为该镜像设置名称。

代码语言:javascript
复制
wildfly:
  build: /path/to/dir/Dockerfile
  container_name: wildfly_server
  ports:
   - 9990:9990
   - 80:8080
  environment:
   - MYSQL_HOST=mysql_server
   - MONGO_HOST=mongo_server
   - ELASTIC_HOST=elasticsearch_server
  volumes:
   - /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
  links:
   - mysql:mysql_server
   - mongo:mongo_server
   - elasticsearch:elasticsearch_server

当我执行docker-compose时,一切都是正常的,但是我得到了一个新镜像的随机名称。是否可以为构建映像设置名称?

EN

回答 9

Stack Overflow用户

发布于 2016-02-27 05:35:26

对于docker-compose version2文件格式,您可以为一个服务构建和标记一个映像,然后将该构建的映像用于另一个服务。

对于我的例子,我想设置一个有2个节点的elasticsearch集群,它们都需要使用相同的镜像,但配置为运行方式不同。我还想从我自己的Dockerfile中构建自己的自定义elasticsearch镜像。所以这是我所做的(docker-compose.yml):

代码语言:javascript
复制
version: '2'

services:
  es-master:
    build: ./elasticsearch
    image: porter/elasticsearch
    ports:
      - "9200:9200"
    container_name: es_master

  es-node:
    image: porter/elasticsearch
    depends_on:
      - es-master
    ports:
      - "9200"
    command: elasticsearch --discovery.zen.ping.unicast.hosts=es_master

您可以看到,在第一个服务定义es-master中,我使用build选项从./elasticsearch中的Dockerfile文件构建镜像。我用带有image选项的名称porter/elasticsearch标记图像。

然后,我在es-node服务定义中使用image选项引用这个已构建的映像,并使用depends_on确保首先构建并运行另一个容器es-master

票数 240
EN

Stack Overflow用户

发布于 2015-11-27 14:49:55

根据docker-compose 1.6.0

如果您正在使用新的文件格式,您现在可以同时指定构建密钥和镜像密钥。docker-compose build将构建镜像并使用您指定的名称对其进行标记,而docker-compose pull将尝试拉取该镜像。

所以你的docker-compose.yml应该是

代码语言:javascript
复制
version: '2'
services:
  wildfly:
      build: /path/to/dir/Dockerfile
      image: wildfly_server
      ports:
       - 9990:9990
       - 80:8080

更新docker-compose

代码语言:javascript
复制
sudo pip install -U docker-compose==1.6.0
票数 88
EN

Stack Overflow用户

发布于 2016-02-03 00:26:54

选项1:提示默认镜像名称

默认情况下,由docker-compose生成的图像的名称取决于文件夹名称,但您可以使用--project-name参数覆盖它:

代码语言:javascript
复制
$ docker-compose --project-name foo build bar
$ docker images foo_bar

选项2:指定镜像名称

一旦docker-compose 1.6.0发布,您可以指定build:image:以具有明确的镜像名称(请参阅arulraj.net's answer)。

选项3:从容器创建镜像

第三种方法是从容器中创建一个镜像:

代码语言:javascript
复制
$ docker-compose up -d bar
$ docker commit $(docker-compose ps -q bar) foo_bar
$ docker-compose rm -f bar
票数 68
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32230577

复制
相关文章

相似问题

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