Docker 是一款开源的运用容器引擎,可以通过Docker打包各个微服务以及依赖的组件到一个可移植的容器中,然后发布到任何Linux机器上,使用容器技术需要解决如何构建独立的单个服务容器,如何组装不同的服务容器构成一个服务体系。
一、Docker与微服务
1、Docker优势
1.轻量级的部署建模方式
2.开发和部署职责逻辑分离:通过Docker实现的容器机制,开发人员关注应用程序,运维人员关注管理容器,从而更好的实现开发和部署职责分离。
3.快速而高效的开发生命周期:以Docker实现的容器技术以及围绕容器技术展开的基础设施自动化建设能够提升服务部署和运维的效率,缩短上线时间,更有利于服务的构建和团队的协作。
4.适合微服务的架构体系:微服务的一大特征是独立部署,Docker恰好提供了容器运行单个应用程序的部署方式,非常适合微服务架构。
2、Docker组件与命令
1.Docker组件
docker 使用的是C/S脚骨模式,使用远程API来管理和创建Docker容器。包含客户端、主机和注册中心3个层次。
守护进程:守护进程是运作在Docker宿主的后台程序,负债响应来自客户端的请求,也就是各种命令。
客户端:客户端与进程通信,客户端通过守护进程的各种PAI进行命令的提交
镜像:相当于源码的构建环境,由一序列的命令组成。构建一个Dokcer 镜像时并不是完全从头开始,而是在现有的某个镜像上进行扩展,docket会采用一种分层的文件系统将所有的资源打包到一起,创建一个新的镜像时只有变化的部分才会被构建
容器:原代码的运行环境,相当于镜像的实例
注册中心:保存已经构建完成的镜像
2.docker命令
info:查看docker工作状态,目前运行的容器数量、镜像数量、服务状态、操作系统等属性。
searh:执行docker search xx 可以获取想要的镜像信息。
pull:从docker Hub中下载最新版的镜像。
images:执行docker images 查看镜像列表。
buil:构建镜像 如:docker build./dockerfilepath/-t eureka:0.0.01 构建eureka:0.0.01镜像。
rmi:删除镜像 docker rmi eureka:0.0.01 删除该镜像,docker rmi -f eureka:0.0.01 强制删除
history:查看镜像构建过程,docker history eureka 查看eureka镜像的构建过程。
ps :列出容器列表docker ps -a 查看所有容器列表
run:拉取镜像,运行容器。-name表示命名容器 -d 表示运行的是一个守护式容器 -p表示映射端口 如:docker run -d -p 8761:8761 eureka:0.0.01
start:启动容器。docker start 容器Id 表示启动某个容器
stop/kill :停止/强制停止容器 docker stop 容器Id
rm: 删除容器,删除容器之前必须要先停止容器。
二、使用Dockerfile构建服务镜像
1.Dockerfile命令
FROM:FROM<image>:<tag>,指定使用的基础镜像,如FROM java:8表示基于JDK8构建自己的镜像。
MAINT AINER: MAINT AINER <name> 指定维护这 如:MAINT AINER kyh
RUN:在当前镜像的基础上执行指定命令,并提交为新的镜像。
CMD:指定启动时执行的命令
EXPOSE:改命令乐意指定容器暴露的端口号供系统交互使用
ENV:指定运行环境,会被RUN命令命令使用
ADD:往镜像中添加jar包时候需要借助次命令。
2.使用dockerfile命令构建镜像
三、使用Docker Compose 编排服务
Docker Compose 是用来定义和运行复杂运用的Dcoker工具,使用Docker Compose 可以允许在一个模板YAML中定义多个容器应用,然后通过一条命令来启动整个体系。
1.Docker Compose 组件的整体架构
2.工程
一个工程涵盖了涵盖了我们所有的资源,包含所有的配置文件以及各个服务。
3.服务
4.容器:docker 容器
2、Docker Compose 命令
up 创建启动命令 kill 杀掉容器 ps 显示容器 rm 删除停止的容器 scale 设置服务的容器数量 pull 拉取镜像 restart 启动容器 build 构建或重建容器 start 启动容器 stop 停止容器 down 停止并移除容器
3、docker-compose.yml命令
4、使用docker compose 编排多个服务
实列拓扑结构图