windows 10使用docker运行spring boot

1.安装docker

  • windows 10 docker:下载地址

2.设置docker

在windows下设置docker直接使用gui界面来设置就可以了
右键启动栏的docker小图标,点击settings>general

  • 设置启用localhost的2375端口来运行docker(如果不启用,则后面你试用运行时就会报2375端口无法访问的错误)
Expose daemon on tcp://localhost:2375 without TLS
  • 设置阿里云加速器
    阿里云加速器
    先用你的阿里云账号登入,在Docker Hub 镜像站点中找到镜像地址
    然后在settings>daemon中添加这个镜像(也可以换成你专属的地址)
https://m7c6b36f.mirror.aliyuncs.com

3.创建在docker中运行spring boot 项目

跟常规的方式创建spring boot一样,只是在maven中添加了一个docker的插件,可以使用maven来创建docker服务器


        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            
                com.spotify
                docker-maven-plugin
                0.4.13
                
                    ${docker.image.prefix}/${project.artifactId}
                    src/main/docker
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
        
    

    
        UTF-8
        yurencloud
        1.3.3.RELEASE
    

并在spring boot项目的src/main/docker目录中创建Dockerfile文件

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD spring-boot-docker-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

4.创建docker服务器

docker会下载服务器镜像frolvlad/alpine-oraclejdk8:slim,并添加spring boot项目jar文件spring-boot-docker-1.0-SNAPSHOT.jar,并给jar文件取个别名app.jar,最后告诉docker服务器,启动时执行 java -Djava.security.egd=file:/dev/./urandom -jar /app.jar 这条命令
若出现无法连接localhost:2375端口,请看上面的2.设置docker

mvn package docker:build

服务器创建好后,执行下面命令,让docker启动服务器
docker 运行,端口, 本地8080和docker的8080相互映射,启动容器 yurencloud/spring-boot-docker

docker run -p 8080:8080 -t yurencloud/spring-boot-docker

然后你在自己的浏览器中就可以访问在docker中运行的spring boot

localhost:8080

5.总结

在docker和vagrant之间相比,docker的运行速度更快,每个镜像更小。但docker真要装起来,也能变得很大个。
docker能创建单独的容器,单独运行mysql,单独运行redis,那么如果我们本机不想安装mysql,或redis,可以在创建容器,然后通过docker使用这些服务,这个特性是vagrant无法相比的。
如果我们的某些服务,只能运行在linux中,无法运行在windows中,使用vagrant或者创建虚拟机完成的linux系统,再安装服务,那显然太过麻烦,庞大。而docker可以更好的适应这种情况。
但java开发阶段使用docker,我觉得不大适合,php到很适合。
不过到了部署到生产环境的时候。docker到能发挥很大的作用,无论是对于java web还是php web。
因为docker是创建一个一个容器,每个容器都有自己的运行环境,并且相互隔离。
当我们想创建一个nodejs环境,想创建一个php环境,想创建一个java环境,又想创建一个java搭配oracle的环境,又想搭配php和mysql的环境,此时,我们完全就可以用docker来创建一个一个容器,这样,我们就不必在自己的电脑中安装各种软件,配置各种变量,弄得乱七八糟,同时,docker启动又十分迅速!并且就算是同一个java环境,还可以分成java6容器,java8容器。
我感觉主要优势还是docker的轻量级,多容器。

我们([AVOS Cloud**](https://link.zhihu.com/?target=https%3A//cn.avoscloud.com/))是做 BaaS,场景非常适合使用 Docker,抛出来大家一起聊下。
在我们的平台上,一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要:资源隔离:比如限制应用最大内存使用量,或者资源加载隔离等。
低消耗:虚拟化本身带来的损耗需要尽量的低。

我们不可能在一台机器上开 500 个虚拟机,虽然可以在资源隔离方面做的很好,但这种虚拟化本身带来的资源消耗太严重。另一个方面,我们可以考虑使用语言级别沙箱,虽然这种「虚拟化」本身的消耗可以低到忽略不计,但是资源隔离方面绝对是噩梦,比如你打算在一个 JVM 里隔离内存的使用。
而 Docker 很好的权衡了两者,即拥有不错的资源隔离能力,又有很低的虚拟化开销。
作者:无知链接:https://www.zhihu.com/question/22969309/answer/30865048来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(windows 10使用docker运行spring boot)