【微服务】容器化之Docker & Kubernetes

1.容器生态

容器技术的生态系统自下而上分别覆盖了IaaS层和PaaS层所涉及的各类问题,包括资源调度编排部署监控配置管理、存储网络管理、安全、容器化应用支撑平台等。如下图,其中dockerk8sconsuletcd等都是此处需要关注的。

docker主要是轻量级容器引擎,起到容器(运行着服务)间隔离的作用,可以充分利用机器资源,自动化部署。

Kubernetes(k8s)主要用于管理容器集群,

【微服务】容器化之Docker & Kubernetes_第1张图片

1.1优势

  1. 持续部署与测试
  2. 跨云平台支持
  3. 环境标准化和版本控制

2.Docker使用

2.1 三大核心概念

Image镜像  
Container容器 轻量级虚拟机
Docker registry镜像仓库 类似与github等代码仓库,官方仓库https://hub.docker.com/

2.2 关联关系

常用流程就是

1.编写dockerfile,build生成一个镜像,将镜像push到仓库 

2.从仓库pull拉取一个镜像,run创建一个容器并运行

像上面的流程一样,3者直接通过docker命令可以交互

【微服务】容器化之Docker & Kubernetes_第2张图片

2.2.1 命令

分类

命令

容器生命周期管理

run、start/stop/restart、kill、rm、pause/unpause、create、exec

容器操作

ps、inspect、top、attach、events、logs、wait、export、port

容器rootfs命令

commit、cp、diff

镜像仓库

login、pull、push、search

本地镜像管理

images、rmi、tag、build、history、save、load、import

docker环境

info、version

类别

常用子命令

样例&功能

环境

 

docker info

 

Docker环境信息

Containers

Images

...

docker version

 

Client\Server:

 Version:           18.06.1-ce

 API version:       1.38

 Go version:        go1.10.3

 Git commit:        e68fc7a

 Built:             Tue Aug 21 17:23:18 2018

 OS/Arch:           linux/amd64

 Experimental:      false

容器启动、关闭

docker run

 

基于特定的镜像创建一个容器,并依据选项来控制该容器运行

docker run --name=mysqltest -d -p 3306:3306 mysql/mysql-server:5.7

该命令从mysql-server:5.7镜像启动一个容器,并执行echo命令

--name指定容器名字

-d 后台执行

-p 容器服务端口到主机端口映射 hostPort:container-Port

 

docker start/stop/restart

对于已经存在的容器,可以通过dockerstart/stop/restart命令来启动、停止和重启

docker rm

删除容器

镜像仓库

 

 

docker pull

从Docker registry中拉取image或repository

docker pull mysql/mysql-server:5.7 从mysql仓库拉取tag是5.7的mysql-server镜像

docker push

将本地的image或repository推送到DockerHub的公共或私有镜像库

 

镜像管理

 

docker images

可以列出主机上的镜像

docker build

Dockerfile和docker build命令来完成一个新镜像的构建

docker commit

提交容器对镜像的修改

docker save

保存镜像

docker rmi

删除镜像

容器运维

docker ps

查看容器的相关信息,默认只显示正在运行的容器的信息

3.Kubernetes

3.1 集群架构

用户通过api发送指令给master,master发信号给Node

【微服务】容器化之Docker & Kubernetes_第3张图片【微服务】容器化之Docker & Kubernetes_第4张图片

master和node的组件如下:

【微服务】容器化之Docker & Kubernetes_第5张图片

3.1 核心概念

节点 组件 功能
master API Server

对外接口

用户操作的接口

Scheduler

资源调度

预定的调度策略将Pod调度到相应的机器上(Model)

Controller manager

管理控制器

负责维护集群的状态,比如故障检测、自动扩展、滚动更新等

etcd 用以保存了整个集群的状态
Node Pod

部署、水平扩展和制作副本的最小单元。

可以有多个容器Container(Docker 容器)

Pod内的所有容器共享存储和网络。

Kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
kube-proxy

负责为服务Service提供cluster内部的服务发现和负载均衡

监听 API server 中 service 和 endpoint 的变化情况

3.2 开放接口

命令 功能
kubectl create -f xxx.yaml 创建资源对象
kubectl get nodes 查看node
kubectl get pods -n -o wide 查看pods
kubectl describe 描述资源,如node、pod
kubectl delete 删除资源,如node、pod

kubectl exec date

kubectl exec -it -c /bin/bash

执行pod第一个容器的date命令

执行指定pod、指定容器的bash命令

kubectl logs -f -c   查看日志(相当于tail -f 命令)

 

 

你可能感兴趣的:(分布式)