前言:微服务的落地需求
- 环境需求差异大:CPU业务型、GPU计算型、高吞吐I/O型。
- 服务敏捷要求高:成百上千、快速启动、优雅停止。
- 组织架构变化:产品导向、DevOps文化、团队微小化。
容器化的三大助力
- 码头林立-各种软硬件平台层出不穷。
- 微服务-高内聚、低耦合、分钟启停和部署。
- 康威定律-组织结构决定上层建筑。
Docker的技术特点?
- 方便的客户端管理。
- 强大的服务器端引擎。
- 便利的镜像技术。
- 无敌的镜像仓库。
- 庞大的生态系统。
Cloud Foundry的技术特点?
- 快速发布。
- 多语言支持。
- 网络和路由绑定。
- 用户和认证。
- 日志监控。
- 第三方支持。
如何做技术选型?
容器编排
- 验证资质:资源分配、兼容性判断。
- 学剑招:部署、回滚。
- 练套路:服务发现、应用依赖。
- 悟变通:健康检查、弹性伸缩。
- 道法术:业务、软件包、应用服务。
- 一传十:配置管理、快速复制。
编排技术
- Kubernetes(K8S)。
- Mesos(资源的管理) + Marathon(资源的调度)。
- Docker Swarm
如何做技术选型?
Docker容器生命周期管理
- Docker Container之CRUD
- Docker Container之状态机模型
- Docker Container之隔离与限制
# 下载
curl -fsSL get.docker.com -o get-docker.sh
#运行脚本
sh get-docker.sh --mirror Aliyun
#刷新配置文件
systemctl daemon-reload
#启动docker
systemctl restart docker
#检查是否安装成功
docker version
#demo:
docker run hello-world
docker run -d redis:3.2 redis-server
docker exec -it [容器id] redis-cli
docker run -d -p 80:80 nginx
#Docker 之 CRUD
docker ps -a //查看容器短id
docker start //[containerId] 启动容器
docker pause //[containerId] 暂停容器
docker unpause //[containerId] 启用容器
docker stop //[containerId] 停止容器
docker kill //[containerId] 停止容器
docker logs //[containerId] 查看日志
docker rm //[containerId] 删除容器
// 资源管控
docker run -d -c 40 nginx //限制cpu
docker run -d -m 200M --memory-swap=400M nginx //限制内存
docker run -d --blkio-weight 300 ngnix //限制磁盘比例
docker rmi //[IMAGE ID] 删除镜像
#Dockerfile
#Dockerfile 实战
Dockerfile
#Owner by zhang xx
FROM debian
MAINTAINER data
RUN mkdir test1
RUN touch test2
COPY test3 .
ADD test4.tar.gz .
ENTRYPOINT ["/bin/sh"]
CMD ["-c" , "ls -l"]
#ENTRYPOINT 如果Dockerfile 里面有多个 ENTRYPOINT ,只会执行最后一个
#CMD 如果docker run 的时候指定了命令,就不执行,如果docker run 没有执行命令,但是Dockerfile 里面 有 ENTRYPOINT ,那么CMD 就会当做 ENTRYPOINT 指定的参数去执行,以后都不符合就会去执行CMD
docker build -t mysh .