一、Docker微服务容器化
- Docker基础
- Docker是Linux容器的一种封装,提供简单易用的容器使用接口,是目前最流行的Linux容器解决方案。
- Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件就会生成一个虚拟容器,程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。
- Docker的核心概念包括Docker镜像(只读,包含需要运行的文件,用于创建container)、Docker容器(Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境)以及Docker hub/registry(共享和管理Docker镜像的平台)。
- 服务Docker化
获课:keyouit.xyz/707/
获取ZY↑↑方打开链接↑↑
- 以user-service和user-edge-service为例,需要编写Dockerfile文件来定义镜像的创建过程。
- Dockerfile中通常包括源镜像、工作目录设置、文件复制、端口暴露以及运行命令等指令。
- 通过编写build.sh脚本来构建镜像,执行如docker build -t mic-user-service -f Dockerfile .的命令。
- 容器管理
- 编写start.sh脚本来管理容器的启动、停止和删除等操作。
- 例如,可以使用docker run命令来启动容器,并映射宿主机的端口到容器的端口。
- 使用docker stop和docker rm命令来停止和删除容器。
二、K8s微服务容器化
- Kubernetes基础
- Kubernetes(k8s)是自动化容器操作的开源平台,用于部署、调度和节点集群间扩展容器。
- Kubernetes提供了自动化容器的部署和复制、容器规模扩展、容器组织成组及负载均衡、应用程序容器新版本升级以及容器弹性等特性。
- Kubernetes核心概念
- ETCD组件:用于保存集群所有的网络配置和对象的状态信息。
- Master节点组件:包括kube-apiserver(资源操作的唯一入口)、kube-controller-manager(资源自动化控制中心)、kube-scheduler(Pod调度器)以及kube-dns(服务发现)。
- Node节点组件:包括Pod(运行部署应用或服务的最小单元)、kubelet(Pod生命周期管理)以及kube-proxy(Service通信与负载均衡机制的重要组件)。
- K8s微服务部署
- 在Kubernetes中部署微服务通常涉及创建Deployment、Service等资源对象。
- Deployment用于定义Pod的部署策略,如副本数量、滚动更新等。
- Service用于定义Pod的访问方式,如负载均衡、服务发现等。
三、实战案例
- 使用docker-compose编排容器
- docker-compose是一个用于定义和运行多容器Docker应用的工具。
- 通过编写docker-compose.yml文件来配置应用的服务,然后使用docker-compose up命令即可一键启动所有服务。
- 在docker-compose.yml文件中可以定义多个服务,并指定它们的镜像、端口映射、环境变量等配置。
- Harbor私有仓库管理
- Harbor是VMware公司开源的企业级Docker Registry项目,提供了图形管理UI、基于角色的访问控制、AD/LDAP集成以及审计日志等企业用户需求的功能。
- Harbor的每个组件都是以Docker容器的形式构建的,可以使用docker-compose来部署。
- Harbor支持镜像复制、删除和垃圾回收等操作,并提供了RESTful API供管理员操控。
综上所述,云原生中的Docker与K8s微服务容器化实战涉及多个方面,包括Docker基础、服务Docker化、容器管理、Kubernetes基础、Kubernetes核心概念以及实战案例等。通过掌握这些知识和技能,可以更好地进行微服务架构的设计和实现。