Docker与Docker 1.12“组合;“群集模式”;
有人知道如何(如果可能)使用新的docker 1.12“swarm mode”swarm对swarm运行docker compose命令吗 我知道,在以前的“Docker Swarm”中,您可以通过更新Docker_主机以指向Swarm主机,直接对Swarm运行Docker compose命令:Docker与Docker 1.12“组合;“群集模式”;,docker,docker-compose,docker-swarm,Docker,Docker Compose,Docker Swarm,有人知道如何(如果可能)使用新的docker 1.12“swarm mode”swarm对swarm运行docker compose命令吗 我知道,在以前的“Docker Swarm”中,您可以通过更新Docker_主机以指向Swarm主机,直接对Swarm运行Docker compose命令: 导出DOCKER\u主机=”tcp://123.123.123.123:3375“ 然后简单地执行命令,就好像在对Docker engine的单个实例运行命令一样 或者这项功能是docker compo
导出DOCKER\u主机=”tcp://123.123.123.123:3375“
然后简单地执行命令,就好像在对Docker engine的单个实例运行命令一样
或者这项功能是docker compose bundle正在取代的吗?这是不可能的。Compose使用容器创建服务的客户端概念。Docker 1.12 Swarm模式引入了新的服务器端服务概念
您认为
docker组合包是正确的;docker stack deploy是一种在Swarm模式下运行Compose文件的方法。我意识到我的问题措辞含糊不清,实际上有两个部分。但最终,我找到了解决这两个问题的办法
1) 在Docker 1.12远程机器上运行时,您能否直接“针对”swarm/swarm模式运行命令?
虽然您不能真正“针对”群集运行命令,但您可以在群集的主节点上运行docker service
命令,以便在该群集上运行服务。
您还可以配置Docker守护程序(Docker守护程序是swarm的主节点)在TCP端口上侦听,以便从外部公开Docker API
2) 您仍然可以使用docker compose文件在docker 1.12 swarm模式下启动服务吗?
是的,尽管这些功能目前是Docker“实验性”功能的一部分。这意味着您必须下载/安装包含实验功能的版本(请查看github)。
您基本上遵循这些说明
从docker-compose.yml文件转到分布式应用程序包,然后转到应用程序堆栈(此时您的服务实际运行)。
$docker组合包
$docker部署[选项]堆栈
以下是我所做的:
在我的远程swarm manager节点上,我使用以下选项启动docker:
docker守护进程-D-Hunix:///var/run/docker.sock -Htcp://0.0.0.0:2375 &
这将Docker守护进程配置为侦听标准Docker套接字unix:///var/run/docker.sock
和上的localhost:2375
警告:我不是为了简单而在这里启用TLS
在本地机器上,我更新docker主机环境变量,使其指向swarm主节点。
$export DOCKER\u HOST=”tcp://XX.XX.XX.XX:2377“
(使用IP填充)
导航到我的docker-compose.yml文件的目录
从我的docker-compose.yml文件创建捆绑文件。确保包括.dab
扩展名。
docker compose bundle--fetch digests-o myNewBundleFile.dab
从捆绑文件创建应用程序堆栈。不要在此处指定.dab
扩展名。
$docker部署myNewBundleFile
现在我仍然遇到一些与网络相关的问题,但我已经成功地从未修改的docker-compose.yml文件中启动并运行了我的服务。我遇到的网络问题记录在这里:虽然Docker Compose中对Swarm模式的官方支持仍在进行中,但我创建了一个简单的脚本,它接受Docker Compose.yml
文件并为您运行Docker service
命令。有关详细信息,请参阅。的可能副本无法直接使用docker compose完成此操作,您需要绑定并使用实验构建加载堆栈。看,是的,它是@BMitch。回答得很好,谢谢!