Docker Swarm 是 Docker 官方推出的容器编排工具之一,可以实现对 Docker 容器集群的管理和部署。本文将介绍 Docker Swarm 的基本概念和使用方法,并结合示例代码进行实践演示。
Docker Swarm 基本概念
节点(Node)
节点指的是 Docker 集群中的一个服务器,可以是物理主机或虚拟机。每个节点都可以运行多个 Docker 容器,并与其他节点组成一个集群。节点分为两种类型:管理节点和工作节点。
管理节点(Manager Node)
管理节点是 Docker 集群的核心,负责集群的管理和调度。一个 Docker Swarm 集群至少需要一个管理节点,可以有多个管理节点,以实现高可用性。
工作节点(Worker Node)
工作节点是 Docker 集群中的普通节点,负责运行 Docker 容器。工作节点可以有多个,可以动态加入和退出集群。
服务(Service)
服务是 Docker Swarm 集群中的一个应用程序,由一个或多个容器组成。服务可以在集群中的多个节点上运行,由管理节点进行调度和管理。服务可以动态扩展和缩减容器数量,以适应负载变化。
栈(Stack)
栈是一组相关的服务的集合,可以使用 Docker Compose 文件进行定义和管理。栈可以在 Docker Swarm 集群中进行部署和管理。
Docker Swarm 实践
部署 Docker Swarm 集群
在开始实践之前,需要先部署一个 Docker Swarm 集群。可以使用 Docker Machine 工具来快速创建虚拟机,并在虚拟机上安装 Docker 和 Docker Swarm。
// javascriptcn.com 代码示例 # 创建管理节点 $ docker-machine create -d virtualbox manager1 $ docker-machine ssh manager1 $ docker swarm init --advertise-addr <manager1-ip> # 创建工作节点 $ docker-machine create -d virtualbox worker1 $ docker-machine ssh worker1 $ docker swarm join --token <worker-token> <manager1-ip>:<port>
其中,<manager1-ip>
是管理节点的 IP 地址,<worker-token>
是工作节点加入集群所需的 token,<port>
是 Docker Swarm 的通信端口,默认为 2377。
创建服务
创建服务可以使用 Docker Compose 文件进行定义和管理。以下是一个简单的示例文件,定义了一个 web 服务,由 nginx 和 php-fpm 两个容器组成。
// javascriptcn.com 代码示例 version: '3' services: nginx: image: nginx ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./html:/usr/share/nginx/html depends_on: - php-fpm php-fpm: image: php:fpm volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./html:/var/www/html
该文件定义了两个服务:nginx 和 php-fpm,分别对应两个容器。其中,nginx 容器映射了主机的 80 端口,将请求转发到容器内的 nginx 服务。php-fpm 容器挂载了主机目录和容器目录,以实现文件共享。
部署服务
部署服务可以使用 docker stack deploy
命令进行。以下是部署上述示例服务的命令:
$ docker stack deploy -c docker-compose.yml web
其中,-c
参数指定了 Docker Compose 文件的路径,web
是服务的名称。
扩容服务
扩容服务可以使用 docker service scale
命令进行。以下是将 nginx 服务扩容到 3 个容器的命令:
$ docker service scale web_nginx=3
其中,web_nginx
是服务的名称和容器名的组合,3
是容器数量。
删除服务
删除服务可以使用 docker stack rm
命令进行。以下是删除示例服务的命令:
$ docker stack rm web
其中,web
是服务的名称。
总结
本文介绍了 Docker Swarm 的基本概念和使用方法,并结合示例代码进行实践演示。Docker Swarm 是一个强大的容器编排工具,可以帮助我们轻松管理和部署 Docker 容器集群。希望本文能对读者理解和应用 Docker Swarm 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65066bf795b1f8cacd2501d2