Kubernetes 2019-07-13 常见容器编排技术 docker compose(单机)、docker swarm(集群)、docker machine(快速创建一个docker host) mesos、marathon kubernetes DevOps CI:持续集成。Continuous Integration CD:持续交付。Delivery CD:持续部署。Deployment DevOps、MicroServices、Container 微服务可以充分利用容器技术本身的特性(分发、构建、部署)。 容器技术弥补了DevOps中的交付环节和部署环节的裂缝,使得DevOps可以落地。DevOps又进一步推动了容器编排技术。 DevOps思想落地于容器编排技术之上。 IaaS、PaaS、SaaS Kubernetes简介 舵手,源于谷歌的Borg系统,Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。
Swarm 2019-07-12 分布式系统中多容器管理的困难 生产环境中同一种类型的容器往往散落在各个主机节点上,因此无法回避下列问题: 怎么去管理这么多容器? 怎么能方便的横向扩展? 如果容器down了,怎么能自动恢复? 如何去更新容器而不影响业务? 如何去监控追踪这些容器? 怎么去调度容器的创建? 保护隐私数据? Docker Swarm Mode Architecture 综上所述,容器编排应运而生,docker的容器编排工具的实现有很多,只不过swarm是内置于docker的容器编排工具,由docker公司内置到docker中。 Service & Replicas * 在docker swarm模式下Service的概念和Docker Compose中的概念基本一致。 * 在Replicas横向扩展模式下,每个Replicas都是一个实际的容器,每个容器都会根据调度系统的计算,被分配在不同的node上运行。也就是说,通过Swarm Manager部署去部署一个Service时候,其实是不知道容器最终会运行在哪些swarm节点上的,这取决于Swarm的调度算法的计算结果(例如:根据节点....
Docker Compose多容器部署 2019-12-11 多容器的APP的痛点 要从Dockerfile build image或者Dockerhub拉取iage 要创建多个container 要管理这些container(启动停止删除) 一个应用可能由多个容器之间相互配合完成,追个容器进行管理成本高,将多个容器定义为一个组,对组进行统一的管理。 微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。 Docker Compose简介 使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。 Docker Compose是一个工具。 这个工具可以通过yml文件定义多容器的docker APP。 通过一条命令就可以根据yml文件的定义去创建或管理多容器。 yml概念 Services 一个service代表一个container,这个container可以从dockerhub的image创建而来,或是从本地的Dockerfile build构建的image创建而来。 Service的....
Docker的持久化存储和数据共享 2019-07-11 Container Layer 数据默认会写在Container Layer层,如果删除容器则应用数据也会随之消失,应用数据的生命周期随容器的生命周期。 Docker持久化数据的方案 基于本地文件系统的Volume。可以在执行Docker create或Docker run时,通过-v参数将主机的目录作为容器的数据卷。 基于plugin的Volume,支持第三方的存储方案,比如NAS,AWS。 数据持久化:Data Volume * 受管理的Data Volume,由docker后台自动创建。 * 绑定挂载的Volume,具体挂载位置可以由用户指定。 不管以上哪种方式都需要在Dockerfile内指定VOLUME。 [root@localhost ~]# docker run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql # 查看volume [root@localhost ~]# docker volume ls local d4c4991c29f14a193f87460de0b847ec30f5f4d1....
构建私有镜像仓库 2020-01-07 私有镜像仓库 开通镜像服务 登录阿里云开通容器镜像服务。点击管理控制台-》初次使用会提示开通,然后设置密码。 点击管理 # 登录阿里云Docker Registry docker login --username=soulboy1990116 registry.cn-shanghai.aliyuncs.com # 从Registry中拉取镜像(拉取) [root@localhost ~]# docker pull registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world flask-hello-world: Pulling from abc1024/soulboy_images [root@localhost ~]# docker run -d -p 5000:5000 registry.cn-shanghai.aliyuncs.com/abc1024/soulboy_images:flask-hello-world Digest: sha256:8c4f6441a730d5abff5838....
Linux Network Namespace 2019-07-12 Linux namespace 的概念 Linux 内核从版本 2.4.19 开始陆续引入了 namespace 的概念。其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例(The purpose of each namespace is to wrap a particular global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. )。Linux 内核中实现了六种 namespace,按照引入的先后顺序,列表如下: namespace 引入的相关内核版本 被隔离的全局系统资源 在容器语境下的隔离效果 Mount namespaces Linux 2.4.19 ....
容器与镜像 2019-08-25 Docke Architecture Docker客户端 Docker Client的主要目的是提供一种方法来指导从注册中心里提取镜像并使其在Docker主机上运行。 DockerHost Docker主机提供了一个完整的环境来执行和运行应用程序。它包括Docker守护程序,镜像,容器,网络和存储。如前所述,守护进程负责所有与容器相关的操作,并通过CLI或REST API接收命令。它还可以与其他守护进程通信,以管理其服务。Docker守护程序根据客户端的请求提取和构建容器镜像。一旦它提取了请求的镜像,它就会利用一组称为构建文件的指令为容器构建一个工作模型。构建文件还可以包括守护程序在运行容器之前预加载其他组件的指令,或者在构建容器之后将指令发送到本地命令行的指令。 Docker对象 各种对象用于组装应用,docker的主要对象如下: Images:用于构建容器的只读二进制模版,可以通过私有或公共注册中心获取。 Containers:容器是运行应用程序的封装环境。容器由映像和启动容器时提供的任何其他配置选项定义,包括但不限于网络连接和存储选项。容器只能访问映像中定义的资源,除非....