我是Docker的新手,并尝试在Docker-Swarm上本地部署一个hello-world Flask应用程序。
到目前为止,我有我的Flask应用程序,Dockerfile和docker-compose.yml文件。
version: "3"
services:
webapp:
build: .
ports:
- "5000:5000"
docker-compose up
正常工作并部署我的Flask应用。
我已经使用docker swarm init
启动了一个Docker Swarm,据我所知创建了一个包含单个节点的swarm:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
efcs0tef4eny6472eiffiugqp * moby Ready Active Leader
现在,我不想要工作者或其他任何东西,只需要一个节点(默认情况下创建的管理器节点),并在那里部署我的图像。
查看这些说明https://docs.docker.com/get-started/part4/#create-a-cluster,似乎我必须创建一个VM驱动程序,然后在那里scp我的文件,然后ssh运行docker-compose up。这是正常的工作方式吗?为什么我需要VM?我不能只在群集管理器上运行docker-compose吗?我没有办法这样做,所以我猜我错过了什么。
答案 0 :(得分:2)
运行docker-compose up
将直接在主机上创建单个容器。
使用swarm模式,管理容器的所有命令都已转移到docker stack
和docker service
,这些命令管理多个主机上的容器。 docker stack deploy
命令接受带有-c
arg的撰写文件,因此您将在管理器节点上运行以下命令:
docker stack deploy -c docker-compose.yml stack_name
根据版本3 yml文件创建名为“stack_name”的堆栈。无论您有一个节点还是由您的群管理的大型群集,此命令的工作方式都相同。