Docker 容器化部署运维 OpenStack 和 Ceph

当前,以 OpenStack 为代表的 IaaS 开源技术和以 Docker 为代表的 PaaS/CaaS 容器技术日益成熟,二者如何强强联合,一直是业界颇为关心的焦点领域。本文主要是和大家交流基于 Docker 容器运行和部署 OpenStack。

那么,安装 OpenStack 都有哪些方法呢?对于很多刚接触 OpenStack 的新人而言,安装无疑是一大挑战,同时也直接提高了学习 OpenStack 云计算的技术门槛。

安装 OpenStack 有哪些方式

1.DevStack

在相当长一段时间内,DevStack 仍将是众多开发者的首选安装工具。该方式主要是通过配置一个安装脚本,执行 Shell 命令来安装 OpenStack 的开发环境,支持 CentOS、Debian 等系列系统。

2. RDO

RDO 是由 Red Hat 红帽开源的一个自动化部署 OpenStack 的工具,支持单节点(All-in-One)和多节点(Multi-Node)部署。但 RDO 只支持 CentOS 系列操作系统。需要注意的是,该项目并不属于 OpenStack 官方社区项目。

3. 手动部署

按照社区官方提供的文档,可以使用手动方式部署单节点、多节点、HA 节点环境。

4. Puppet

Puppet 由 Ruby 语言编写。Puppet 是进入 OpenStack 自动化部署中早期的一个项目。目前,它的活跃开发群体是 Red Hat、Mirantis、UnitedStack 等。

Mirantis 出品的 Fuel 部署工具,其大量的模块代码使用的便是 Puppet。

5. Ansible

Ansible 是一个自动化部署配置管理工具,已被 Red Hat 收购。它基于 Python 开发,集合了众多运维工具(Puppet、Chef、SaltStack 等)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible 一方面总结了 Puppet 设计上的得失,另一方面也改进了很多设计。比如基于 SSH 方式工作,故而不需要在被控端安装客户端。

6. SaltStack

SaltStack 也是一个开源的自动化部署工具,基于 Python 开发,实现了批量系统配置、批量程序部署、批量运行命令等功能,和 Ansible 很相似。不同之处是,由于 SaltStack 的 Master 和 Minion 认证机制及工作方式,因此需要在被控端安装 Minion 客户端。

7. TripleO

TripleO 项目最早由 HP 于2013年4月在 Launchpad 上注册 BP,用于完成 OpenStack 的安装与部署。TripleO 全称为“OpenStack On OpenStack”,意思为“云上云”,可以简单理解为利用 OpenStack 来部署 OpenStack,即首先基于 V2P(和 P2V 相反,指把虚拟机的镜像迁移到物理机上)的理念事先准备好一些 OpenStack 节点(计算、存储、控制节点)的镜像,然后利用已有 OpenStack 环境的 Ironic 裸机服务和软件安装部分的 diskimage-builder 部署裸机,最后通过 Heat 项目和镜像内的自动化部署工具(Puppet 或 Chef)在裸机上配置运行 OpenStack。和其他部署工具不同的是,TripleO 是利用 OpenStack 已有的基础设施来部署 OpenStack 的。

8. Fuel

Fuel 是针对 OpenStack 的一个可以通过“界面部署”的工具,它大量采用了 Python、Ruby 和 JavaScript 等语言。其功能涵盖了通过自动化 PXE 方式安装操作系统、DHCP 服务、Orchestration 编排服务和 Puppet 安装相关服务等,此外还有 OpenStack 关键业务健康检查和 log 实时查看等非常好用的功能。

9.Kolla

上面说了这么多,现在终于轮到主角上场了——Kolla。Kolla 是具有广阔应用前景和市场的一个自动化部署工具。相比于其他部署工具,Kolla 完全革新地使用了 Docker 容器技术,将每一个 OpenStack 服务运行在不同的 Docker 容器中。

以前,我们要想在 OpenStack 版本发布后或者在版本开发过程中,立即安装体验等只能使用 DevStack 源码方式安装。但现在更多了一种新的选择——即使用 Kolla。

该项目由思科于2014年9月提出,是 OpenStack 社区“Big Tent”开发模式下的项目。Kolla 的优势和使用场景体现在如下几个方面:

  • 原子性升级或者回退 OpenStack 部署。
  • 基于组件升级 OpenStack。
  • 基于组件回退 OpenStack。

具体而言,Kolla 的最终目标是为 OpenStack 的每一个服务都创建一个对应的 Docker镜像,通过 Docker 镜像将升级的粒度减小到服务级别,从而在升级时对 OpenStack 的影响降到最小,并且一旦升级失败,也很容易回滚。

升级只需要三步:拉取新版本的容器镜像,停止老版本的容器服务,启动新版本的容器。回滚也不需要重新安装包,直接启动老版本的容器服务就行,非常方便。

Kolla 可以使用 Ansible、Kubernetes 或者 Mesos 来部署 OpenStack 环境,Kolla 负责容器化 OpenStack 各个服务;后者则负责部署这些容器,搭建出一个可用的 OpenStack 环境。来实现基于 Docker 容器的 OpenStack 服务全生命周期管理,如安装、升级、回滚、迁移等。

在部署 Docker 容器时,默认的网络配置都是 Host 模式。因为 Kolla 的 Docker 镜像粒度很小,它针对每个 OpenStack 服务都有特定的镜像,所以我们也可以通过 Docker 命令来操作某个具体的 OpenStack 服务。

Kolla项目,及其相关的其他项目,如下:

  • Kolla 项目:负责Docker build OpenStack每个服务,如 nova-compute 容器等;
  • Kolla-Ansible 项目:使用 Ansible 部署这些容器,搭建 OpenStack 环境;
  • Kolla-Kubernetes 项目:使用 Kubernetes 部署这些容器,搭建 OpenStack 环境;
  • Kolla-Mesos 项目:使用 Mesos 部署这些容器,搭建 OpenStack 环境。

简言而之,Kolla 就是 OpenStack 社区的一个用于Docker build容器化 OpenStack 服务的项目,最后,使用其他的社区项目,即 kolla-ansible 或者 kolla-kubernetes 执行部署任务。

Kolla 为 OpenStack 的部署提供了有效、快捷、方便、易于维护、方便版本更新与回退的方案。基于 Docker 容器部署和运维的 OpenStack 架构,如下图所示:

Kolla 所涉及到的技术点有:

  • Docker
  • Ansible
  • Python
  • docker-py
  • Jinja2

Kolla 支持部署 HA 高可用性的 OpenStack 环境,如下图所示,大家应该一看就明白吧。是的,正如其他 OpenStack HA 部署方案一样,如 MySQL 采用的是 Galera 等。

目前,Kolla 提供的镜像支持部署如下 OpenStack 项目,包括但不限于:

  • Aodh
  • Ceilometer
  • Cinder
  • Designate
  • Glance
  • Gnocchi
  • Heat
  • Horizon
  • Ironic
  • Keystone
  • Magnum
  • Mistral
  • Murano
  • Nova
  • Neutron
  • Swift
  • Tempest
  • Zaqar

以及这些基础设施组件:

  • Ceph 分布式存储
  • Openvswitch 和 Linuxbridge
  • MongoDB 数据库
  • RabbitMQ 消息队列服务
  • HAProxy 和 Keepalived 服务高可用组件
  • MariaDB 数据库等

Kolla 的 Docker 镜像制作,支持红帽的 RPM 包,Ubuntu 和 Debian 的 Deb 包,还能支持源码的方式。理论上源码制作的镜像,可以运行在所有的支持容器的操作系统上。

我们可以选择 Ansible 来做容器的管理,也可以选择 Kubernetes 或 Mesos 来管理。目前 Ansible 已经比较完善,Kubernetes 和 Mesos 还在积极开发中。

但我个人感觉,Kubernetes 会是未来一段时间的新宠儿,但是它对使用/管理人员的要求会比较高。

Kolla解决的问题

过去,无论是个人还是公司尝试使用 OpenStack,在安装和部署,都花费和消耗大量的精力。这其实也是影响 OpenStack 推广的一个重要障碍。如何让大家从部署的枷锁中解放出来,用好 OpenStack,才能真正体现出 OpenStack 的价值。

一般安装好操作系统后,采用 Kolla 部署 OpenStack 环境,大概只需要30分钟的时间,就可以搭建完成 OpenStack。社区的各种最佳实践,高可用等都集成在上面。Kolla 让 OpenStack 的部署、升级变得更加的优雅。

所谓软件的升级就是把以前老的删掉,再装新的版本。如果你是采用包的安装,例如 Rdo,那就非常的痛苦了。如果没有其他定制化开发的需求,使用社区提供的已构建好的OpenStack 镜像即可。

kolla 容器化部署 OpenStack

OpenStack 官方建议:OpenStack 和 Ceph 管理网、外网使用 10Gig 网络;OpenStack 和 Ceph 数据集群、业务网使用高性能、高可用的网络,防止其成为环境的瓶颈,从而影响整个集群的数据一致性和性能。

部署环境,信息如下所示。

(1)Centos7.2 系统最小化安装;关闭 SElinux、Firewalld、NetworkManager(在所有节点上执行)。安装依赖

#systemctl stop NetworkManager && systemctl disable NetworkManager#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config#systemctl disable firewalld#reboot

(2)加入 Docker 的 repo 源(在所有节点上执行):

# tee /etc/yum.repos.d/docker.repo << 'EOF'[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

(3)配置各节点的 /etc/hosts 文件,使各节点均能通过 hostname 互相 ping 通,如下(在所有节点上执行):

# cat /etc/hosts192.168.108.240  OpenStack_Control1-Ceph192.168.108.243  OpenStack_Compute1-Ceph192.168.108.249  OpenStack_Compute2-Ceph

(4)机器均做免密钥登录,在控制节点上,执行如下命令:

# ssh-keygen              //一路回车# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.108.243# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.108.249

其他节点,依次类推。

安装和配置 Docker 服务

(1)安装基础包(在所有节点上执行):

yum -y install epel-releaseyum install python-devel libffi-devel gcc openssl-devel git  ansible python-pip -y
pip install --upgrade pip

(2)安装 Docker 1.12.5(在所有节点上执行):

yum install docker-engine-1.12.5 docker-engine-selinux-1.12.5 -y

(3)设置 Docker(在所有节点上执行):

mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'[Service]
MountFlags=shared
EOF

(4)编辑 /usr/lib/systemd/system/docker.service 文件(在所有节点上执行):

#ExecStart =/usr/bin/dockerdExecStart=/usr/bin/dockerd --insecure-registry 192.168.108.240:4000

(5)重启 Docker 服务(在所有节点上执行):

systemctl daemon-reload && systemctl restart docker
systemctl enable docker

(6)在控制节点上,配置阿里云的 Docker 加速器,加快 pull registry 镜像。

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://a5aghnme.mirror.aliyuncs.com"]
}
EOF

再重启下Docker服务:

systemctl daemon-reload && systemctl restart docker

(7)默认 Docker 的 Registry 是使用5000端口,对于 OpenStack 来说,有端口冲突,所以需要改成4000。在控制节点上,Pull 并启动 registry 镜像。

docker run -d -v /opt/registry:/var/lib/registry -p 4000:5000 \
--restart=always --name registry registry:2

安装和配置 Kolla-ansible

(1)这里,下载使用 Kolla 社区的 Ocata 版本镜像(免去在本地环境 Docker build 的过程,大大加快安装时间)。在控制节点上执行:

wget http://tarballs.openstack.org/kolla/images/centos- source-registry-ocata.tar.gz
tar zxvf centos-source-registry-ocata.tar.gz -C /opt/registry/

(2)安装 kolla 和 ansible。在控制节点上执行:

cd /home
git clone https://github.com/openstack/kolla-ansible -b stable/ocata
pip install kolla-ansible/

(3)复制相关文件,在控制节点上执行:

cp -r kolla-ansible/etc/kolla /etc/kolla/cp kolla-ansible/ansible/inventory/* /home/

说明:如果是在虚拟机里安装 Kolla,希望可以在 OpenStack 平台上创建虚拟机,那么你需要在 globals.yml 文件中把 novacomputevirt_type 配置项设置为 qemu,默认是 KVM。

(4)生成密码文件。在控制节点上执行:

kolla-genpwd

(5)编辑 /etc/kolla/passwords.yml 文件,配置 keystone 管理员用户的密码。在控制节点上执行:

keystone_admin_password: password

同时,也是登录 Dashboard,admin 使用的密码,你可以根据自己需要进行修改。

(6)编辑 /etc/kolla/globals.yml 配置文件。在控制节点上执行:

# egrep "^[^#]" /etc/kolla/globals.yml ---
kolla_install_type: "source"kolla_internal_vip_address: "192.168.108.240"       //访问Dashboard的地址docker_registry: "192.168.108.240:4000"docker_namespace: "lokolla"network_interface: "eth2"            //网卡IP地址为192.168.108.240neutron_external_interface: "eth0"     //该网卡为外网不配置IP地址storage_interface: "eth2"             //Ceph公共网络cluster_interface: "bond0"           //Ceph集群/数据网络enable_aodh: "yes"enable_chrony: "yes"enable_ceilometer: "yes"enable_ceph: "yes"enable_ceph_rgw: "yes"enable_ceph_rgw_keystone: "yes"enable_cinder: "yes"enable_cloudkitty: "yes"enable_gnocchi: "yes"enable_horizon_cloudkitty: "{{ enable_cloudkitty | bool }}"enable_horizon_magnum: "{{ enable_magnum | bool }}"enable_horizon_murano: "{{ enable_murano | bool }}"enable_hyperv: "yes"enable_magnum: "yes"enable_mongodb: "yes"enable_murano: "yes"enable_neutron_lbaas: "yes"enable_neutron_fwaas: "yes"enable_neutron_qos: "yes"glance_backend_ceph: "yes"cinder_backend_ceph: "{{ enable_ceph }}"nova_backend_ceph: "{{ enable_ceph }}"

(7)将 Ceph 安装在 Docker 容器中,故此,对节点上的磁盘打标签。此处,将 SDB、SDC、SDE SATA 盘用于 Ceph OSD,SDD 盘则用于 Ceph Journal盘。Kolla 对 Ceph 的 OSD 及日志盘的识别是通过卷标来实现的。如 OSD 的卷标为 KOLLACEPHOSDBOOTSTRAP,Journal 的卷标为 KOLLACEPHOSDBOOTSTRAP_J。

将SDB、SDC 和 SDE盘,格式化为Ceph OSD盘,如下,在控制节点上执行:(注意:OSD 盘和 Journal 盘分区名称,在所有机器上,都不能同名,切记)

parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1 1 -1
parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_2 1 -1
parted /dev/sde -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_3 1 -1

将 SDD 盘,格式化为 Ceph Journal 盘,每个分区对应于一个 OSD,每个分区大小为70G(根据 SDD 盘总容量来平均分摊)。如下,在控制节点上执行:

parted /dev/sdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1_J 2048 70G
parted /dev/sdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_2_J 70G 140G
parted /dev/sdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_3_J 140G 220G

在其他节点上,也重复此操作,分区序号请依次递增。

查看命令的结果:

# parted /dev/sdd print

(8)配置 ceph.conf 文件,在控制节点上执行:

# mkdir /etc/kolla/config# vim /etc/kolla/config/ceph.conf[global]
osd pool default size = 2 //此处写2,表示2副本,如果只有一个OSD节点就写1osd pool default min size = 2

(9)可选。检查 Kolla 节点的镜像是否可用,从而验证 Kolla 环境部署成功。在控制节点上执行:

# curl http://192.168.108.240:4000/v2/_catalog

(10)编辑 ansible 的部署文件。在控制节点上执行:

# vim /home/multinode[control]
OpenStack_Control1-Ceph
[network]
OpenStack_Control1-Ceph
[compute]
OpenStack_Compute1-Ceph
OpenStack_Compute2-Ceph
[monitoring]
OpenStack_Control1-Ceph
[storage]
OpenStack_Control1-Ceph
OpenStack_Compute1-Ceph
OpenStack_Compute2-Ceph
[ceph-mon:children]
storage

执行 ansible 安装 OpenStack

建议,在执行安装命令前,先使用 kolla-ansible --help 命令,了解下kolla-ansible 支持的具体命令或参数。

以下步骤,均在控制节点上执行。

编辑 /usr/share/kolla-ansible/ansible/groupvars/all.yml 文件,设置enablehaproxy 参数为no。

enable_haproxy: "no"

(1)运行 prechecks 检查配置是否正确,如果有错误,可以先忽略。

# kolla-ansible prechecks -i /home/multinode -vvvv

(2)执行安装 OpenStack 的命令。

kolla-ansible deploy -i /home/multinode -vvvv

(3)安装结束后,创建环境变量文件。

kolla-ansible post-deploy

这样就创建了/etc/kolla/admin-openrc.sh 环境变量文件。

(4)安装 OpenStack Client 端。

pip install python-openstackclient

(5)根据官方建议,部署成功后,删除 Ceph 默认创建的 RDB 存储池。

docker exec ceph_mon ceph osd pool delete rbd rbd --yes-i-really-really-mean-it

(6)主机上,Ceph 的配置文件位于:

  • /var/lib/docker/volumes/cephmonconfig
  • /etc/kolla/ceph-xxx

(7)查看 Ceph 服务状态,看是否正常运行:

docker exec -it ceph_mon ceph -s

执行效果如下图所示:

docker exec -it ceph_mon ceph osd tree

执行效果如下图所示:

验证部署

登录 Dashboard,URL为:http://192.168.108.240,用户名为 admin,密码为 password。

(1)如果部署了 Ceph,则将镜像格式由 qcow2 改为 raw 格式:

# wget -c http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img# yum install qemu-img -y# qemu-img convert -f qcow2 -O raw cirros-0.3.4-x86_64-disk.img cirros-0.3.4-x86_64-disk.raw# qemu-img info cirros-0.3.4-x86_64-disk.raw

(2)运行命令:

# source /etc/kolla/admin-openrc.sh# glance image-create --name cirros --disk-format=raw --container-format=bare --visibility public --file=./cirros-0.3.4-x86_64-disk.raw

这个时候,你可以登录 Dashboard,创建网络、安全组、云硬盘和虚拟机等等了。结果如下图所示。

给虚拟机绑定 floating ip 后,ping 其 floating ip,如下图所示,可 ping 通。

部署经验

(1)如果,在部署过程中失败了,亦或是变更了配置信息,需要重新部署,则执行如下命令,清除掉已部署的 Docker 容器,即 OpenStack 服务。

kolla-ansible destroy -i /home/multinode --yes-i-really-really-mean-it

接着,umount 卸掉 Ceph OSD 挂载的目录,如 /dev/sdb1。

umount /dev/sdb1

删除掉 /var/lib/ceph 目录下的 OSD 文件:

rm -rf /var/lib/ceph/osd/*

删除掉 OSD 盘的分区,如 /dev/sdb:

parted /dev/sdb rm 1 rm 2

重新对 OSD 盘进行分区,如 /dev/sdb:

parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1 1 -1

最后,执行部署命令即可。

(2)除此外,还有一些小工具,在需要时,可以使用。

  • kolla-ansible prechecks:在执行部署命令之前,先检查环境是否正确;
  • tools/cleanup-containers:可用于从系统中移除部署的容器;
  • tools/cleanup-host:可用于移除由于网络变化引发的 Docker 启动的neutron-agents 主机;
  • tools/cleanup-images:可用于从本地缓存中移除所有的 Docker image。

最后,可以使用 docker ps -a 命令查看到安装的 OpenStack 所有服务的容器。

故障诊断与排除

通过 Kolla 和 Ansible 部署或运行 OpenStack 环境时,如果出现问题,通常可以使用如下一些方法来排查/解决。

(1)查看指定容器(即指定的服务)的输出日志信息。

docker logs container_name

(2)进入到 fluentd 日志收集容器里,查看指定服务的日志。

docker exec -it fluentd bash

接着,CD 到 /var/log/kolla/SERVICE_NAME 目录下。

(3)还可以,直接 CD 到主机的 /var/lib/docker/volumes/kollalogs/data/ 目录下,查看指定服务的日志信息。

(4)一些 Ceph的管理命令,如下:

  • docker exec -it ceph_mon ceph osd pool ls
  • docker exec -it ceph_mon ceph -s
  • docker exec -it ceph_mon rbd ls images
  • docker exec -it ceph_mon rbd ls volumes
  • docker exec -it ceph_mon rbd ls vms

当然,也可以直接进入到 Ceph 容器中,直接执行相关命令,如下所示。

# docker exec -it -u root ceph_mon bash

查看OSD状态和Ceph集群状态:

ceph osd tree
ceph health
ceph -s

查看 Ceph 的实时运行状态:

ceph -w

查看 Ceph 存储空间:

ceph df
ceph osd df

查看 Ceph 集群monitor信息:

ceph mon statceph osd dump |grep pool

要检查监视器的法定人数状态,执行下面的命令:

ceph quorum_status

查看OSD Journal分区大小:

ceph --show-config|grep osd_journal_size

作者说:

OpenStack 是当下炽手可热的 IaaS 开源云计算项目,使用 OpenStack 可满足企业各种云服务需求,如私有云、混合云或公有云。通过本系列教程的学习,即使是一个初入云计算的行业者也能迅速熟悉和掌握 OpenStack 的相关技术,提高职业竞争力,成为一名复合型人才。

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2018-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jeremy的技术点滴

试用docker功能

3877
来自专栏IT笔记

Docker学习之搭建JavaWeb环境

自上次从北京参加阿里云社区开发者进阶大会回来,就萌发了学习Docker的种子,尽管公司现在的业务并没有什么需求,但学习先进的东西总没有坏处。

5617
来自专栏王小雷

Docker网络管理机制实例解析+创建自己Docker网络

实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开...

2489
来自专栏bboysoul

docker管理工具portainer介绍安装和使用

portainer是一个docker管理工具,提供一个web管理界面方便大家管理自己的容器,我对这个工具的评价是:神器。 关键是什么呢,免费,方便,漂亮。 ...

3991
来自专栏Debian社区

Docker 17.06 社区版发布

今天我们发布了Docker CE 17.06,它包含了诸多新特性、优化和bug修复。我们在四月份的DockeCon上公布了Moby项目,Docker CE 17...

1314
来自专栏Debian社区

Debian 9 图形界面安装有bug 开发人员正在修复

Debian 9 前两天发布了正式版,许多用户在准备下载体验新版本。不过据外媒报道,Debian 9 的所有镜像中似乎都存在一个 bug 。 当您尝试使用图形安...

2061
来自专栏友弟技术工作室

docker微服务初体验配置文件composedocker compose使用

8485
来自专栏跟我一起学Docker

第二章 Docker环境安装

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实...

2413

构建远程缓存系统

上个月,我们的工程团队发布了一个大的更新,关于在使用我们的Docker平台Jet时Docker镜像是如何被缓存和存储的。在本文中,我们将讨论更新的动机,特性的设...

2406
来自专栏友弟技术工作室

docker微服务初体验

在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、单个服务的设计。 而所谓服...

5418

扫码关注云+社区

领取腾讯云代金券