一、docker简介
引擎,为应用创建轻量级、可移植、自给自足容器。本地编译测试通过的容器可批量在生产环境中部署,包括JVM、bare metal、OpenStack 集群和其他基础应用平台。
Docker通常用于如下场景:
web应用自动化打包和发布;
自动化测试和持续集成、发布;
服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点
1、简化程序: 打包应用(及依赖包)到可移植容器,发布Linux 机器上,实现虚拟化,Docker管理,数天任务,数秒完成。
2、避免选择恐惧症: 包含运行环境和配置,简化部署。如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支: 与云结合,云空间充分利用。解决硬件管理问题,改变虚拟化方式。
二、准备工作
docker-maven-plugin构建docker镜像。linux系统,不建议windows
三、改造工程、构建镜像
(1)改造eureka-server工程
1)修改下配置文件:
2)编写dockerfile文件:
3)docker file编写指令:
FROM
FROM指令在Dockerfile其他指令前,image(后续指令依赖)可是远程/本地。同一Dockerfile建立多个镜像,用多个FROM指令。
VOLUME格式为:VOLUME ["/data"]
容器目录持久化数据,目录被容器用,可共享其他容器。
ADD
从src目录复制文件到容器dest。src可是Dockerfile相对路径,可是URL或压缩包
ENTRYPOINT
指定Docker容器启动时执行的命令,多次设置,只最后一个有效。
EXPOSE
Docker容器对外端口号。-p或-P启动。
4)构建镜像
执行构建docker镜像maven命令:
mvn clean
mvn package docker:build 构建eureka-server镜像成功。
(2)同理构建service-hi镜像
pom文件导入同eurek-server
1)修改下配置文件:
defaultZone发现服务的host改为镜像名,dockefile 编写同eureka-server
2)构建镜像:
mvn clean
mvn package docker:build
运行docke的eureka-server 和service-hi镜像:
docker run -p 8761: 8761 -t forezp/eureka-server
docker run -p 8763: 8763 -t forezp/service-hi
访问localhost:8761
四、docker-compose启动镜像
定义和运行多容器的Docker。在配置文件(yaml)配置应用服务,用命令,创建并启动所有服务。
编排镜像,启动镜像:
输入命令: docker-compose up
2个镜像按指定顺序启动
源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11
五、docker-compose编排并启动镜像
Dockerfile移到eureka-server主目录,改ADD相对路径:
同理改service-hi目录;构建镜像docker-compose-dev文件:
命令构建镜像并启动:
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up
源码下载:https://github.com/forezp/SpringCloudLearning/tree/master/chapter11-2