win10家庭版+docker+springboot+nginx

docker背景介绍

介绍一篇比较好的docker文章:https://www.jianshu.com/p/50f48eb25215
【个人理解】
docker:容器技术,在同一个服务器可以同时部署多个docker容器,容器间是隔离的,共享内核
虚拟机:通过Hypervisor层进行虚拟机管理,虚拟出多个操作系统
虚拟机是操作系统层面的隔离,docker是内核层面的隔离;docker比虚拟机少了Hypervisor层,通过docker deamon进行docker容器管理。
因此,docker启动时间是秒级,而虚拟机启动是分钟级
【docker与虚拟机比较】
比较好的总结:https://blog.51cto.com/11880730/2116096
借用两张图:
虚拟机:
在这里插入图片描述
docker:
在这里插入图片描述

优势

1、docker比虚拟机少了Hypervisor层,直接使用物理机的硬件资源,因此在cpu、内存利用率上,更胜一筹
2、docker启动比虚拟机快很多,虚拟机启动包含了系统引导时间以及系统资源消耗,而docker直接利用宿主机的内核,因此有着启动快,资源消耗低
3、环境统一,减少环境不同带来的开发影响

劣势
1、docker是应用层面的隔离,而虚拟机是硬件层面的彻底隔离,因此当宿主机的操作系统出现故障,docker多容器都会受到牵连,而虚拟机则不会
2、兼容性问题,docker目前还在版本快速更新中,细节功能调整较大,一些核心的模块依赖于高版本的内核,存在兼容性的问题

win10家庭版安装docker,运行springboot程序

1、安装docker
由于docker desktop for windows不支持win10家庭版,这里暂时选择了docker toolbox
下载网址:https://get.daocloud.io/toolbox/
安装过程默认即可
安装成功后会出现如下界面
在这里插入图片描述
2、使用docker运行springboot
可参考https://blog.csdn.net/weixin_40804733/article/details/88710845
2.1 构建springboot,编译打包
其中,通过idea的maven进行项目的编译打包即可
在普通的springboot项目中,添加docker依赖

<properties>
        <docker.image.prefix>springboot</docker.image.prefix>
    </properties>

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!-- Docker maven plugin -->
        <plugin>

            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
        <!-- Docker maven plugin -->
    </plugins>

配置application.properites
在这里插入图片描述
这里指的了tomcat端口8090
2.2创建dockerfile
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD springboot-nginx-usersurvey-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:

FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
VOLUME ,VOLUME 指向了一个 /tmp 的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用 /tmp 作为工作目录。这个命令的效果是:在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到容器中的 /tmp 目录
ADD ,拷贝文件并且重命名
ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为 ENTRYPOINT
*注意!!!

add 后面的名字和版本,必须和pom文件中的名字和板门是一样的,如图
在这里插入图片描述

2.3 构建docker镜像
编译打包,将jar包与dockerfile存放在同一个文件夹中
执行命令docker build -t docker .,构建镜像
在这里插入图片描述
使用docker image查看构建好的镜像
在这里插入图片描述
注意,这里可能遇到一个问题TLS handshake timeout
在这里插入图片描述
原因:镜像下载超时
修改镜像库即可
在这里插入图片描述
执行docker-machine restart,如下图即为成功
在这里插入图片描述
重新执行docker build -t docker .
2.4 运行docker容器
docker run -p 4000:8090 docker
在这里插入图片描述
访问网址
在这里插入图片描述
由于Docker引擎的守护进程使用的是Linux的内核,所以无法直接在windows中运行docker引擎,需要运行Docker Machine命令docker-machine,创建一个Linux虚拟机,用这个虚拟机才可以在windows系统上运行Docker引擎。

因此访问时,需要访问docker的虚拟ip
在这里插入图片描述

至此,win10 + docker + springboot搭建完毕

配置nginx学习中,待补充。。。

centos7安装docker+nginx
重新配置yum源,再修改/etc/docker/daemon.json
{
“registry-mirrors”: ["https://96e6e1rd.mirror.aliyuncs.com "]
}
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值