我使用docker-compose来创建我的开发环境。我想建立一个特定的图像,但我不知道如何为该图像设置一个名称。

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时,一切正常,但我为新映像获得了一个随机名称。是否可以为构建映像设置一个名称?


当前回答

在你建立你的映像后,做以下工作:

Docker标签<镜像id> mynewtag:版本

之后,你会看到你的图像不再被命名为<none>当你进入docker images。

其他回答

对于docker-compose版本2文件格式,您可以为一个服务构建并标记一个映像,然后为另一个服务使用相同的构建映像。

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

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中,我使用构建选项从./elasticsearch中的Dockerfile构建一个映像。我用名称porter/elasticsearch和image选项标记图像。 然后,我使用image选项在es-node服务定义中引用这个构建的映像,并使用depends_on来确保先构建并运行另一个容器es-master。

在docker-compose。在你的服务中添加image: " your - desired - name "行,例如,如果你的服务名称是wildfly,你想将你的图像命名为wildfly_img

wildfly: 图片:wildfly_img

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

docker-compose生成的图像名称默认依赖于文件夹名称,但你可以使用——project-name参数覆盖它:

$ docker-compose --project-name foo build bar
$ docker images foo_bar

选项2:指定映像名称

一旦docker-compose 1.6.0发布,你可以指定build:和image:来有一个显式的映像名称(参见arulraj.net的答案)。

选项3:从容器中创建映像

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

$ docker-compose up -d bar
$ docker commit $(docker-compose ps -q bar) foo_bar
$ docker-compose rm -f bar

Sudo docker-compose -p <project_name>构建

指定项目名称

注意:命令中'-p'选项出现在'build'之前

裁判:https://docs.docker.com/compose/reference/

根据Docker 3.9版本的撰写,可以使用image: myapp:tag来指定名称和标签。

version: "3.9"
services:
  webapp:
    build:
      context: .
      dockerfile: Dockerfile
    image: webapp:tag

参考:https://docs.docker.com/compose/compose-file/compose-file-v3/