我可以在虚拟机中将本地构建部署到docker swarm吗?

我可以在虚拟机中将本地构建部署到docker swarm吗?,docker,Docker,我正在学习Docker,并试图遵循Docker教程,我在第4步 基本上在这一步中,我们为docker swarm创建了2个虚拟机:1个作为swarm manager,1个作为swarm worker 我认为它将docker hub推送的映像拉到虚拟机上,以使服务在swarm中工作。问题是我并没有将我构建的映像推送到docker hub 我的问题是,我可以使用本地构建部署到swarm VM吗 我试图将示例docker compose.yml更改为build,如下所示: version: "3" s

我正在学习Docker,并试图遵循Docker教程,我在第4步

基本上在这一步中,我们为docker swarm创建了2个虚拟机:1个作为swarm manager,1个作为swarm worker

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

我的问题是,我可以使用本地构建部署到swarm VM吗

我试图将示例
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:


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

您可以在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
然后使用

localhost:5000/Image_Name:Tag
docker push localhost:5000/Image_Name:Tag

这将允许您将图像保存在本地注册表中,swarm无需推送到dockerhub即可使用该注册表。您可以在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
然后使用

localhost:5000/Image_Name:Tag
docker push localhost:5000/Image_Name:Tag

这将让你将图像保存在本地注册表中,你的swarm无需点击dockerhub即可使用该注册表

I解决了我的这个问题。在运行
dockerswarm
之前,我只需要
scp
将映像构建到VMs并在VMs中构建映像所需的文件。所以这个问题已经得到了答案。但是,如果有人知道在不将图像推给docker repo的情况下构建swarm的其他方法,我非常乐意听到。我有点解决了我的这个问题。在运行
dockerswarm
之前,我只需要
scp
将映像构建到VMs并在VMs中构建映像所需的文件。所以这个问题已经得到了答案。但是,如果有人知道在不将图像推给docker repo的情况下构建swarm的任何替代方法,我非常乐意听到。酷。我需要先试试这个。我在docker的某个地方读到关于私有注册的文章,但我不知道它是本地的。我需要先试试这个。我在docker的某个地方读到关于私有注册的文章,但我不知道它是本地的。