docker - 我可以将本地构建部署到虚拟机中的 docker swarm 吗?
问题描述
我正在学习 Docker 并尝试遵循 Docker 教程,并且在此处的第 4 步。
基本上在这一步中,我们为 docker swarm 创建 2 个 VM:1 个作为 swarm manager,1 个作为 swarm worker。
我认为它将 docker-hub 推送图像拉到虚拟机以使服务在群中工作。问题是我没有将构建的图像推送到 docker hub。
我的问题是,我可以使用本地构建部署到 swarm VM 吗?
我试图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:
它当然不起作用,这就是为什么我问是否有办法做到这一点?
解决方案
您可以在 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
推荐阅读
- mysql - 直接在 MySQL Workbench 中启动 MySQL 命令行客户端
- python - 使用 Python 解析和拆分 .txt 文件并导出为 .csv 行
- c++ - 从 Visual Studio 启动时,发布构建比“正常”启动时更快
- javascript - Angular 7 和外部 Java 脚本文件错误
- mysql - 从 minikube 访问在 localhost 上运行的 mysql
- c# - 对不同列表框中的列表项进行分类
- nginx - nginx 代理上的远程 HLS 文件 (stream.m3u8)
- google-cloud-platform - 如何防止子域网址不更改为 Google Cloud DNS 上网址中的 IP 地址?
- docker - 如何覆盖docker中的参数?
- javascript - 使用 jquery 替换 li 文本