一.本地Windows电脑(Windows安装Docker,并部署应用)
1.安装:
Docker可以支持在mac、windows、linux上安装。但是在windows系统中Docker目前仅有win10专业版和企业版的安装包,
win7/win8/win10家庭版需要通过docker toolbox(下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/)来安装。
Windows Docker 安装参考: http://www.runoob.com/docker/windows-docker-install.html
安装时可能出现的问题:
a.问题一:点击Docker Quickstart Terminal出现windows 正在查找bash.exe
解决:右键Docker Quickstart Terminal图标,点击属性,修改目标值(前者为Git路径后者为Docker Toolbox路径):D:\Git\bin\bash.exe –login -i "D:\Docker Toolbox\start.sh"
b.问题二:我在打开Docker客户端的时候没有提示出来那个小鲸鱼
解决:这个问题是电脑CPU的虚拟化功能关闭了,开启后重新打开即可
c.问题三:Docker客户端中执行docker version来查看Docker版本出现 Error response from daemon:client is newer than server
解决:Docker客户端和服务端的api版本不一致导致的,通过升级服务端的 Docker api version即可解决问题,具体方法是在Docker客户端执行docker-machine upgrade命令
2.构建打包应用
1)打包类型:
1.使用docker-maven-plugin 插件
docker-maven-plugin 插件默认连接本地 Docker 地址为:localhost:2375,所以我们需要先设置下环境变量。
DOCKER_HOST=tcp://<host>:2375 其中:<host>改为你上传的服务ip,本地就写127.0.0.1
注意:如果没有设置 DOCKER_HOST 环境变量,可以命令行显示指定 DOCKER_HOST 来执行,如我本机指定 DOCKER_HOST:DOCKER_HOST=unix:///var/run/docker.sock mvn clean install docker:build。
**打包时要注意指定程序入口***
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.13.RELEASE</version>
<configuration>
<!-- 指定程序入口 (需要注意的地方)-->
<mainClass>com.huajie.eureka.EurekaServerApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 添加docker-maven插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${project.artifactId}:${project.version}</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!--覆盖已存在的标签 镜像-->
<forceTags>true</forceTags>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2.使用DockerFile
a.DockerFile指令详解:https://www.cnblogs.com/lighten/p/6900556.html
以下针对打包类型一
2).dos进入到项目文件夹:
D:\HSDFAS\03Project_Code\01Source\branches\HSDFASServer\HSDFAS\hsdfas-eureka
3).执行命令打包到本地镜像:
mvn clean package docker:build -Dmaven.test.skip=true
注:(-Dmaven.test.skip=true不执行测试用例,也不编译测试用例类)
(-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下)
4).查看是否成功:
打开Docker ToolBox 输入 #docker images 进行查看已有镜像
5).运行镜像:
docker run -d -p 8090:8090 hsdfas-eureka:1.0-SNAPSHOT
备注:-p表示端口映射,冒号左边为docker容器外的端口号,右边为容器内的端口号,-d表示后台运行
6).访问应用:
docker 的默认ip:192.168.99.100
浏览器访问 http://192.168.99.100:8090/即可
3.构建其他服务并打包(依赖,以及配置正确是关键)
1)如果依赖其它服务或者module查看是否依赖是否正确,否则会报 Could not resolve dependencies for project
解决:优先在最外层项目上打包 执行clean install -Dmaven.test.skip=true 把依赖打到本地仓库
2)继续执行2的打包镜像操作
4.其中docker常用命令:
1.查看所有镜像:#docker images
2.查看所有容器(包含状态):#docker ps -a
3.查看正在启动的容器: #docker ps
4.终止一个运行中的容器 #docker stop $CONTAINER_ID
5.启动一个容器:#docker start $CONTAINER_ID
6.重启一个容器:#docker restart $CONTAINER_ID
7.查看Container的映射的端口 #docker port <container name or id>
8.查看Container的IP地址 #docker inspect <container name or id>| grep IPAddress
9.查看容器运行日志:#docker logs <container name or id>
10.实时查看docker容器日志:#docker logs -f -t --tail 行数 <container name or id>
11.删除docker容器:docker rmi <container name or id>
注意点:
1. 删除前需要保证容器是停止的 stop
2. 需要注意删除镜像和容器的命令不一样。 docker rmi <container name or id> ,其中 容器(rm) 和 镜像(rmi)
3. 顺序需要先删除容器
12.如果想要把镜像存出到本地文件,可以使用docker save命令#docker save –o /data/testimage.tar testimage:latest (以testimage镜像名称为例)
13.从文件载入镜像可以使用Docker load命令# docker load < testimage.tar
14 进入容器#docker exec -it <container name or id> /bin/bash