百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

如何使用windows版Docker

bigegpt 2024-08-21 12:08 2 浏览

1、前提准备

首先请确认你的电脑是 windows10 专业版或企业版,只有这只有这两个版本才带有 hyperv。

2、介绍

以往我们如果想要在 windows 上使用 docker,都是使用 virual box 来创建虚拟机,自从 windows10 发布以来,微软宣布了一系列的 linux 软件登陆 windows,其中就包括了 docker,现在我们可以使用 windows 自带的 hyper-v 虚拟机来创建运行 docker 服务。

InteliiJ Idea 作为目前最实用的 IDE 对 Docker 也提供了支持。

3、安装 Docker for windows

3.1 从官网下载 docker for windows,https://store.docker.com/editions/community/docker-ce-desktop-windows,下载完毕后进入安装界面, docker 会自动安装,界面一闪而过,电脑运行速度还不错,安装完成之后,docker 会弹个窗告诉你 hyper-v 未开启,像这样。

不过如果你现在点击 OK 基本上是没有用的,得先去 BIOS 里打开硬件虚拟化,本机是惠普的机器,开启点按 f10 进入 bios,其他品牌的机器自行搜索进入,像这样

重启电脑后 docker 会自动运行,依然弹出上面那个 hyper-v 未开启的窗口,这回可以点击 OK 让 docker 来帮你开启 hyper-v,或者是自己在控制面板 - 程序 - 程序和功能 - 启用或关闭 windows 功能里开启 hyper-v

到此,我们的 docker for windows 已经安装完成。在命令行中输入 docker --version 可以查看已经安装的 docker 版本

3.2 使用 docker 中的镜像

3.2.1 先用官方镜像作个示例

使用 docker search来搜索对应的镜像

然后使用 docker pull <镜像名: tag> 例如 docker pull nginx:latest ,tag 不输入是默认拉取最新的 

当镜像下载玩之后我们通过 docker images 命令来查看所有本地的镜像

我这里下载了 java 以及 nginx 的镜像 其中还有我已经打包好的 spring cloud 的 eureka 注册中心的镜像

使用 docker run 命令来运行镜像,我这里运行 nginx 的镜像

使用 docker 运行 nginx 成功后访问 localhost:80 就可以访问到 nginx 的主页,说明我们已经在 docker 运行了我们的第一个镜像,虽然是官方镜像,但心里的成就感还是不低的。

好的,在运行了第一个镜像之后,我们要开始在 IntelliJ IDEA 中使用 docker 并构建我们的第一个 spring boot 程序放到 docker 中去运行

4、IDEA 的准备工作

1:Docker 插件,首先需要在你的 IDEA 中安装 Docker 插件,定位到 File-Setting-Plugins 后搜索 Docker Integration 安装。

2:配置 Docker 服务器,在 IDEA 中定位到 File-Setting-build,Execution,Deployment-Dockers

如果你没用使用 Docker Machine 来管理虚拟机的需求的话, 我们使用默认的 Docker 守护进程就 OK 了,不过在此之前我们还需要设置一下 docker

将 docker 与本地的连接设置为不需要 TLS 加密。

在完成这一步之后,可以在 IDEA 的配置窗口看到成功连接到了本机上的 docker

到这里,我们已经完成对 docker 的配置,接下来就可以进入真正的实施阶段。

5、创建 spring cloud 项目

1. 首先在 Idea 中创建一个 spring boot 项目,怎么创建在此就不再赘述了

创建完成之后,我们在 pom.xml 中添加依赖项

本地编写的是 spring cloud 的注册中心项目,所以还需要加上

spring 的版本需要与 spring cloud 的版本号对应,详细的对应信息可以去 http://projects.spring.io/spring-cloud / 查看

由于本次只是简单地示范如何在 IDEA 中部署 spring boot 项目到 docker 中,所以在项目中只需要对 eureka 注册中心进行简单的配置就 OK 了,

在启动类中加上注解标明这是一个 eureka 注册中心的项目

在配置文件中配置端口

然后我们就完成了项目的编写,可以先启动看看项目是否能够启动,启动之后我们访问 http://localhost:8761/ , 可以看到我们的 eureka 注册中心已经启动,项目编写没有问题

接下来就到了如何把项目部署到 docker 中去的问题了

6、将项目部署到 Docker 中

首先我们需要编写 Dockerfile 文件,在 src-main 目录下新建 docker 文件夹,然后在其中新建 Dockerfile 文件

文件内容如下

其中红框的地方是本项目打包之后的 jar 包名字,默认是 artifactId-version.jar, 同时我们可以看到在左上叫有个运行的标记,很对,这个就是用来在 IDEA 构建 jar 包到镜像,然后放到 Docker 中运行的按钮, 不过我们还是需要先配置一下

我们先配置镜像名称以及容器名称

然后需要对 docker 容器需要映射的端口号进行配置

然后我们点击 run, 可以看到,很快就报错了,这是由于 DockerFile 与我们生成的 jar 包不在同一个文件夹造成的。

为了解决这个问题,我找到了两种方案:

方案 1:先使用 maven 命令

mvn clean package

对项目进行打包,命令执行完毕之后可以在 target 目录下看到已经打包完成的 jar 包

然后把 jar 包放到 Dockerfile 所在的目录下,像这样

然后接着点击 Dockerfile 中的运行,

在 Deploylog 窗口中,可以看到,这次构建镜像就成功了, 在 log 窗口中可以看到我们的项目在运行过程中打出的日志信息

很明显,这次的构建和部署都成功了, 访问 http://localhost:8761/,出现了我们想要看到的东西。

在命令行中使用 docker ps 命令查看正在运行的容器信息

可以看到,我们在 IDEA 中编写的项目已经运行到了 docker 中。

方案 2:使用 docker-maven-plugin 插件,在 pom.xml 中配置插件

然后在 ternimal 中运行 mvn clean package -DskipTests=true docker:build 命令,打包项目并构建镜像,命令执行完毕可以看到

在 docker 窗口下,我们构建的镜像已经出现在窗口中了

右键点击创建一个新的容器

跳转到我们的部署配置里面,只需要像方案 1 中的一样进行配置完毕后点击 run 就 OK 了, 访问 http://localhost:8761/,同样可以看到我们的 eureka 的运行信息。docker ps 命令也显示我们的容器已经运行起来。

好的,到这里我们先是在安装了 windows 版的 docker, 然后使用 IDEA 创建了一个 spring cloud 项目,并在 IDEA 中将此项目部署到了 docker 中.


本文转载至微信公众号——java思维导图,如有侵权请联系立删!

小编根据自己的开发经验整理了一批JAVA学习资料以及面试题,有需要的伙伴可以私信我{java}获取!

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...