Docker 17.06.0-ce Swarm集群实战(一)

前言

不知不觉,docker已经发布了新的版本且其版本的命名方式也发生了变化;目前自己所使用的最近版本为docker 17.06.0-ce;其中的swarm mode功能也逐渐得到完善,这使得docker在集群中的管理变得方便了不少。虽然swarm在国内生产环境的使用案例是几乎没有的,但是在国外已经有了少许的尝试,其经验也能供大家参考。(《Docker Swarm在生产环境中的进阶指南》

本文打算参照网上其他高手的文章(《Docker 1.12 Swarm集群实战》),也对swarm进行实战,并尝试作部分的改进,把其中的经验和教训记录下来,供他人参考。

第一章 环境准备

所需组件

操作系统:


docker:
详尽的使用方法请仔细参考官方文档

virtualbox:
使用vbox作虚拟机,但是不做管理,管理交由docker-machine处理。


docker-machine:
使用其管理虚拟主机,方便省时。详尽的使用方法请仔细参考官方文档

harbor:
使用其图形化用户界面,方便管理docker镜像。详尽的使用方法请仔细参考官方文档。本机使用离线方式安装。

portainer:
使用其图形化用户界面,方便管理docker容器。详尽的使用方法请仔细参考官方文档。此功能可以暂时放下,待日后完善时再添加。

安装概述

在主机中:

在虚拟机中(使用virtualbox新开一个虚拟机用于单独管理docker镜像,此虚拟机不属于swarm集群):

在浏览器中访问:http://192.168.0.106/(假设harbor部署在主机106上):
根据配置文件中的设置,用户名:admin,密码:Habor12345

注意:swarm集群中,所需的镜像都是从本地局域网harbor中获取的;而harbor中的镜像则是从外网中获取后,再推送到harbor中的。主要是因为外网的网速不稳定,且比较慢。另外,要加快从外网获取docker镜像的速度,则需要修改docker的registry mirror值;具体请参考Use case: the China registry mirror中科大Docker镜像源



作者:Cyberpunk_ZYM
链接:https://www.jianshu.com/p/44cc60335e89
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Docker SwarmDocker 原生的集群管理和编排工具,用于在多个主机上部署和管理容器化应用。以下是基于实战操作的详细指南,涵盖从初始化集群到服务部署的关键步骤。 ### 初始化 Docker Swarm 集群 首先,在管理节点上初始化 Swarm 模式。该命令会将当前节点设置为管理节点,并生成个令牌,用于工作节点加入集群: ```bash docker swarm init --advertise-addr <MANAGER-IP> ``` 执行成功后,终端会输出类似以下内容: ``` Swarm initialized: current node (abc123) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-abc123xyz <MANAGER-IP>:2377 ``` 然后,在工作节点上运行上述命令以加入集群: ```bash docker swarm join --token <SWARM-TOKEN> <MANAGER-IP>:2377 ``` 这将把工作节点添加到 Swarm 集群中,使其能够参与任务调度和容器运行[^1]。 ### 构建 Docker 镜像并部署服务 在进行服务部署之前,需要先构建自定义的 Docker 镜像。假设你已经编写好了 `Dockerfile`,可以使用以下命令构建镜像: ```bash docker build -t your-image-name:0.0.0 . ``` 其中,`your-image-name:0.0.0` 是你指定的镜像名称和标签。建议根据版本号命名,以便后续维护和升级[^3]。 ### 创建并部署服务 旦镜像构建完成,可以通过 `docker service create` 命令在 Swarm 集群中部署服务。例如,启动个 Nginx 服务并暴露端口: ```bash docker service create \ --name my-nginx \ --publish published=80,target=80 \ --replicas 3 \ nginx:latest ``` 该命令将在集群中创建个名为 `my-nginx` 的服务,使用 `nginx:latest` 镜像,副本数为 3,并将宿主机的 80 端口映射到容器的 80 端口。 ### 查看服务状态与日志 要查看服务的运行状态,可以使用以下命令: ```bash docker service ls ``` 该命令将列出所有服务及其状态、副本数等信息。若需查看某个服务的日志,可以在目标节点上运行: ```bash docker service logs my-nginx ``` ### 使用 Stack 部署多服务应用 对于包含多个服务的应用程序,推荐使用 `docker stack deploy` 命令结合 Compose 文件进行部署。例如,创建个 `docker-compose.yml` 文件: ```yaml version: '3' services: web: image: nginx:latest ports: - "80:80" deploy: replicas: 3 redis: image: redis:latest ports: - "6379:6379" deploy: replicas: 1 ``` 然后运行以下命令部署整个应用栈: ```bash docker stack deploy -c docker-compose.yml mystack ``` 该命令将根据 `docker-compose.yml` 文件定义的服务启动个名为 `mystack` 的应用栈,并自动分配服务名称(如 `mystack_web`, `mystack_redis`)[^3]。 ### 安装 Docker CE(适用于 CentOS) 如果尚未安装 Docker CE,可以通过以下命令下载阿里云提供的 YUM 源并安装: ```bash wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker ``` 该方法适用于 CentOS 系统,并确保使用的是稳定的国内源,提升下载速度[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值