【问题标题】:can I deploy local build to docker swarm in virtual machine?我可以将本地构建部署到虚拟机中的 docker swarm 吗?
【发布时间】:2019-06-30 15:02:38
【问题描述】:

我正在学习 Docker 并尝试按照 Docker 教程进行操作,并且在第 4 步中here

基本上在这一步中,我们为 docker swarm 创建 2 个 VM:1 个作为 swarm manager,1 个作为 swarm worker。

我认为它会将 docker-hub 推送的映像拉到虚拟机上,以使服务在 swarm 中工作。问题是我没有将构建的图像推送到 docker hub。

我的问题是,我可以使用本地构建部署到 swarm 虚拟机吗?

我尝试将image 行示例docker-compose.yml 更改为build,如下所示:

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    # image: friendlyhello
    build: .
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "4000:80"
    networks:
      - webnet
networks:
  webnet:

它当然不起作用,这就是为什么我问是否有办法做到这一点?

【问题讨论】:

  • 我有点解决我的这个问题。在运行docker swarm 之前,我只是scp 将映像构建到VM 并在VM 中构建映像所需的文件。所以这个问题已经得到了答案(有点)。但是,如果有人知道在不将图像推送到 docker repo 的情况下构建 swarm 的任何替代方法,我很高兴听到。

标签: docker


【解决方案1】:

您可以在 vm 或本地机器上创建本地注册表,并从本地 repo 推/拉图像

docker run -d -p 5000:5000 --restart=always --name registry registry:2

然后使用命名/标记您的图像

localhost:5000/Image_Name:Tag

然后使用推送图片

docker push localhost:5000/Image_Name:Tag

这将使您可以将图像保存在本地注册表中,您的 swarm 可以在无需推送到 dockerhub 的情况下使用该注册表

【讨论】:

  • 酷。我需要先试试这个。我在 docker 的某个地方读到了关于私有注册表的信息,但我不知道它是本地的。
  • ? 非常易于设置和使用,如果您在设置过程中需要帮助,我们很乐意提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多