Docker compose 在docker compose中定义docker注册表,以便在具有堆栈部署的swarm中使用

Docker compose 在docker compose中定义docker注册表,以便在具有堆栈部署的swarm中使用,docker-compose,docker-swarm,docker-registry,docker-swarm-mode,Docker Compose,Docker Swarm,Docker Registry,Docker Swarm Mode,对于所有有经验的DevOps人员,我有一个关于在swarm中部署私有注册表作为堆栈的一部分的问题 从docker文档中可以看出,注册表需要首先定义和公开(以及保护)并将图像推送到其中。只有这样,它才能在堆栈中使用 但是我想知道,如果我只想将这个注册表容器用于我正在部署的特定堆栈,是否有一种方法可以将注册表定义为docker-compose.yml的一部分,然后使用depends_on-myregistry定义其他容器 我的一般容器结构是:app、Jenkins、secure Nginx作为反向代

对于所有有经验的DevOps人员,我有一个关于在swarm中部署私有注册表作为堆栈的一部分的问题

从docker文档中可以看出,注册表需要首先定义和公开(以及保护)并将图像推送到其中。只有这样,它才能在堆栈中使用

但是我想知道,如果我只想将这个注册表容器用于我正在部署的特定堆栈,是否有一种方法可以将注册表定义为docker-compose.yml的一部分,然后使用depends_on-myregistry定义其他容器

我的一般容器结构是:app、Jenkins、secure Nginx作为反向代理(这是唯一一个向主机公开的),现在我想添加注册表容器(因为我认为这是运行swarm的唯一方法..或者是吗?)

我在这里试图实现的是拥有一个可以立即使用docker stack deploy-compose文件部署的堆栈,而无需首先创建注册表并将图像推入其中。另外,从理论上讲,如果这个注册表只对作为堆栈一部分的服务进行访问,那么它实际上并不需要所有的安全性。这是真的吗


任何指导都将不胜感激

您托管了一个注册表,让所有swarm节点都可以访问您的图像。它只不过是一个中央图像商店。Swarm模式不依赖于私有注册表,只需确保部署服务的每个节点都可以访问映像


即使您完成了构建包含注册表的堆栈的任务,您也需要将图像推送到它。这不能用
docker stack deploy

来完成,我同意上面的@mikgne。我对这一主题的研究得出了以下结论(一位Docker大师在他的博客上的回答):

从理论上讲,创建注册表并将图像推入其中是可能的,只要先创建注册表服务,然后再创建另一个临时服务,将图像构建/推入注册表。然后可以从该注册表中提取连续服务。这显然违背了Docker中服务的概念,因为它们不是临时的

基本上,我知道必须先创建注册表,然后将图像推送到其中。我认为Docker应该考虑实施这一自动推动。我不知道这样的方法是否有缺点,如果你认为这不是一个好方法,请分享你的想法,这可能会导致什么问题