Docker compose标记和推送

Docker compose标记和推送,docker,docker-compose,Docker,Docker Compose,我有几个docker容器,我尝试与docker compose同步(目前由bash脚本运行)。我正在寻找一种方法来标记并将它们推送到我们基于ec2的dockerhub(专用服务器)上 简单地使用docker我们做了类似的事情(针对每个容器): 但当我跑步时: $ docker-compose push 我得到: Pushing some (base:<docker_hub_server>/base:latest)... ERROR: invalid reference format

我有几个docker容器,我尝试与
docker compose
同步(目前由bash脚本运行)。我正在寻找一种方法来标记并将它们推送到我们基于ec2的dockerhub(专用服务器)上

简单地使用
docker
我们做了类似的事情(针对每个容器):

但当我跑步时:

$ docker-compose push
我得到:

Pushing some (base:<docker_hub_server>/base:latest)...
ERROR: invalid reference format
推送一些(基本:/基本:最新)。。。
错误:引用格式无效
有没有关于如何标记和推动我的容器的想法


p、 美国:我知道这不是使用docker compose的方式,但我也知道这是可能的,而且它符合我的需要。

我已经用docker Hub测试了这种方法,因此您应该能够通过以下配置和shell会话实现您想要的:

docker-compose.yml

(此处,如果您使用的不是Docker Hub而是另一个Docker注册表,例如,
quay.io/user/project-1
,则应将
user/project-1
替换为
registry.name/user/project-1

此处涉及的各种字段(
构建:
上下文:
,等等)如中所述

上面的
docker compose.yml
文件假定您有以下树(包括一个和一些文件,以符合最佳实践):

然后在终端中执行以下操作:

$ docker login
  # → append the domain name of your Docker registry
  #   if you are not using Docker Hub; for example:
  # docker login quay.io
$ docker-compose build --pull
$ docker-compose push
  # and optionally:
$ docker logout
最后,以下是一些评论,以澄清与您的问题相关的一些细节:

  • 在您的示例会话中

    $ docker build -f someDockerfile -t some .  # with "." as context build path
    $ docker tag some …/some
    $ docker push …/some
    
    some
    是一个临时图像名(而不是容器),因此它似乎没有必要:您也可以运行以下命令,并获得相同的结果

    $ docker build -f someDockerfile -t …/some .
    $ docker push …/some
    
  • 您的
    docker compose.yml
    示例包含以下行:

    image: some:<docker_hub_server>/some
    
    其中
    registry.name
    应该是所需Docker注册表的域名或主机名(如果省略,它将默认为Docker Hub)

    这一点在本文中提到

    例如,如果您使用码头码头装卸工注册表,图像标记可以是
    Quay.io/user/some:latest
    或更简洁的
    Quay.io/user/some


所有这些命令都使用docker构建和推送。我可以使用docker compose一次推送所有容器吗?当然:可以使用
docker compose.yml
使用
docker compose build
docker compose push
,cf生成并推送在
docker compose.yml>中指定的图像。这对我不起作用。我如何把所有在当地建造的码头工人推到@Notsobaby好的,所以我做了一些实验,它对我有效。我重构了我的答案以添加更多细节(关于
.yml
、要运行的命令和图像标签命名约定)。希望这能有所帮助。哇,这个提示“有些是临时的图像名称(不是容器),所以它似乎没有必要”改变了我的想法!我怎么就不能想到这一点如此明显?当然,删除“标记”步骤很简单!!Thnx。
$ docker login
  # → append the domain name of your Docker registry
  #   if you are not using Docker Hub; for example:
  # docker login quay.io
$ docker-compose build --pull
$ docker-compose push
  # and optionally:
$ docker logout
$ docker build -f someDockerfile -t some .  # with "." as context build path
$ docker tag some …/some
$ docker push …/some
$ docker build -f someDockerfile -t …/some .
$ docker push …/some
image: some:<docker_hub_server>/some
registry.name:port/user/project:version