docker-在没有 docker-机器的情况下组成 swarm
docker-compose swarm without docker-machine
在查看 docker 官方 swarm 解释、github 问题和 Whosebug 回答后,我仍然不知道为什么我会遇到我遇到的问题。
手头的问题:docker-compose up
即使 swarm 处于活动状态并且有 2 个节点,也不在 swarm 中启动服务。
我使用的是 1.12.1 docker 版本。
查看 swarm tutorial 我能够使用 docker service create
启动和扩展我的群,没有任何问题。
运行 docker-compose up
版本 2 docker-compose.yml 导致服务在 swarm 之外启动,我可以通过 [=15 看到它们=] 但不是 docker service ls
我可以看到 docker-machine 是解决这个问题的工具,但又需要安装虚拟盒子。
所以我的问题是
我可以在没有 docker-machine 且没有 experimental build 捆绑功能?
如果docker service create
可以在任何节点上启动服务,是否表明集群的网络配置正确?
docker-machine 的 advantages/disadvantages 与实验构建功能相比是什么
1) 您无法在新的 Docker "Swarm Mode" 上使用 docker-compose 启动服务。有一个功能可以将 docker-compose 文件转换为新的 dab 格式,新的 swarm 模式可以理解这种格式,但目前还不完整且处于试验阶段。您目前基本上需要使用bash个脚本来启动服务。
2) 群(群模式)中的节点使用它们自己的覆盖网络进行交互。当您执行 docker network ls
时,它就是名为 ingress
的那个。您需要为 运行 中的服务设置自己的覆盖网络。例如:
docker network create -d overlay mynet
docker service create --name serv1 --network mynet nginx
3) 我不确定您所说的“实验构建”是什么功能。docker-machine 只是一种创建主机(节点)的方法。它有助于设置 docker 每个主机上的守护程序,证书并允许一些基本维护(更新证书,stopping/starting 一个主机,如果你是创建它的人)。它不创建服务、卷、网络或管理他们。那是 docker api.
的工作
1) 否。Docker Compose 尚未与新的 Swarm 模式集成。 Issue 3656 in GitHub 正在跟踪。如果您现在使用 Docker Compose 在 swarm 上启动容器,它会使用 docker run
启动容器,这就是为什么您会在一个节点上看到它们。
2) 是的。实际上,您可以在管理器上使用 docker node ls
来确认所有节点都已启动并处于活动状态,并使用 docker node inspect
来检查特定节点,您不需要创建服务来验证集群。
3) Docker Machine 也落后于 1.12 版本,因此如果您使用 Docker Machine 启动 swarm,它将是 'old' 类型的 swarm。旧的 Docker Swarm 产品需要为键值存储、TLS 等进行大量额外设置,而 Swarm 模式是免费的。
在查看 docker 官方 swarm 解释、github 问题和 Whosebug 回答后,我仍然不知道为什么我会遇到我遇到的问题。
手头的问题:docker-compose up
即使 swarm 处于活动状态并且有 2 个节点,也不在 swarm 中启动服务。
我使用的是 1.12.1 docker 版本。
查看 swarm tutorial 我能够使用
docker service create
启动和扩展我的群,没有任何问题。运行
docker-compose up
版本 2 docker-compose.yml 导致服务在 swarm 之外启动,我可以通过 [=15 看到它们=] 但不是docker service ls
我可以看到 docker-machine 是解决这个问题的工具,但又需要安装虚拟盒子。
所以我的问题是
我可以在没有 docker-machine 且没有 experimental build 捆绑功能?
如果
docker service create
可以在任何节点上启动服务,是否表明集群的网络配置正确?docker-machine 的 advantages/disadvantages 与实验构建功能相比是什么
1) 您无法在新的 Docker "Swarm Mode" 上使用 docker-compose 启动服务。有一个功能可以将 docker-compose 文件转换为新的 dab 格式,新的 swarm 模式可以理解这种格式,但目前还不完整且处于试验阶段。您目前基本上需要使用bash个脚本来启动服务。
2) 群(群模式)中的节点使用它们自己的覆盖网络进行交互。当您执行 docker network ls
时,它就是名为 ingress
的那个。您需要为 运行 中的服务设置自己的覆盖网络。例如:
docker network create -d overlay mynet
docker service create --name serv1 --network mynet nginx
3) 我不确定您所说的“实验构建”是什么功能。docker-machine 只是一种创建主机(节点)的方法。它有助于设置 docker 每个主机上的守护程序,证书并允许一些基本维护(更新证书,stopping/starting 一个主机,如果你是创建它的人)。它不创建服务、卷、网络或管理他们。那是 docker api.
的工作1) 否。Docker Compose 尚未与新的 Swarm 模式集成。 Issue 3656 in GitHub 正在跟踪。如果您现在使用 Docker Compose 在 swarm 上启动容器,它会使用 docker run
启动容器,这就是为什么您会在一个节点上看到它们。
2) 是的。实际上,您可以在管理器上使用 docker node ls
来确认所有节点都已启动并处于活动状态,并使用 docker node inspect
来检查特定节点,您不需要创建服务来验证集群。
3) Docker Machine 也落后于 1.12 版本,因此如果您使用 Docker Machine 启动 swarm,它将是 'old' 类型的 swarm。旧的 Docker Swarm 产品需要为键值存储、TLS 等进行大量额外设置,而 Swarm 模式是免费的。