一步教你Windows安装Docker,并部署应用

Source

一.本地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