今天给大家推荐一个软件 —— "Docker for windows":

docker wsl docker wsl2有必要吗_docker wsl

如果你对WSL2,还不熟悉,可以关注公众号或小程序看看我之前推送过的两篇文章。

Docker for windows

虽然WSL2提供了Windows的Linux子系统,但是它是一个独立的终端运行,类似Windows的Cmd窗口:

docker wsl docker wsl2有必要吗_WSL2_02

当你在开发程序没有双屏的时候,非常不方便,所以,推荐大家在启用WSL2之后,再安装一下Docker for windows,这样你就可以在自己的IDEA上完成所有操作,不用切屏了。

在安装Docker for windwos之后,可以在Cmd上直接使用Docker的相关命令,不用再运行WSL2,然后在上面运行Docker,非常方便:

docker wsl docker wsl2有必要吗_Docker_03

在Cmd可以运行Docker相关指令,那就是相当于可以像在Linux系统上执行任何指令一样,为所欲为。

很多软件都自带终端,比如VsCode、IDEA、Eclipse等都有响应的终端,以IDEA为例,当可以在Cmd上运行Docker指令后,一个IDEA就可以让你完成开发、部署等操作:

docker wsl docker wsl2有必要吗_Windows_04

安装 Docker for windows

Docker for windows 安装和其他软件安装是一样的,但是有个前提,就是电脑必须启用虚拟化功能,在Windows没有推出WSL2之前,你可能需要借助VBox或者专业版Windows的Hyper-V,但是有了WSL2之后,可以不用安装任何虚拟机(如VBox)。

Docker需要虚拟化支持,在不安装虚拟机的前提下WSL2有两种选择:

  1. WSL2:启用Windows的Linux子系统
  2. Hyper-V:专业版Windows自带的虚拟机

另外有一点很重要,就是Win10版本必须高于build 19041+。

这里以WLS2为例,说一下Docker for windows的安装流程,首先需要在Windows的程序与功能中启用Windows的Linux子系统和虚拟机功能平台:

docker wsl docker wsl2有必要吗_WSL2_05

然后下载Docker for windwos软件,下载地址:

https://www.docker.com/products/docker-desktop

下载后,在安装的时候,勾选安装WSL2需要的组件:

docker wsl docker wsl2有必要吗_Windows_06

默认Docker for windows的安装位置为:

C:\Program Files\Docker

成功安装后,你将看到下面这样的界面:

docker wsl docker wsl2有必要吗_WSL2_07

运行 Docker 容器

成功安装Docker for windows后,电脑右下角的系统托盘中会有一个“鲸鱼装着集装箱”的图标,你可以通过它打开Docker的管理界面。

你可以在命令行中运行Docker的Hello World程序来测试软件是否成功安装:

docker run -d -p 80:80 docker/getting-started

成功运行后,在软件管理界面可以看到如下界面:

docker wsl docker wsl2有必要吗_Windows_08

打开浏览器访问 http://localhost 就可以访问新手教程了:

docker wsl docker wsl2有必要吗_docker wsl_09

IDEA 连接 Docker for windows

要让IDEA能成功连接Docker进程,需要打开Docker 2375端口,开放远程访问,在设置里面,勾选:

Expose deamon on tcp://localhost:2375 without TLS

docker wsl docker wsl2有必要吗_docker_10

IDEA 安装 Docker 插件:

docker wsl docker wsl2有必要吗_docker_11

然后创建Docker连接:

docker wsl docker wsl2有必要吗_docker wsl_12

这样就可以在IDEA管理Docker容器和镜像了:

docker wsl docker wsl2有必要吗_Docker_13

Docker + IDEA 开发到发布一步到位

这里以Vert.x的Hello World程序为例,采用jib-maven-plugin来构建本地镜像,Vert.x的程序可以从下面的地址直接下载:

https://start.vertx.io/

下载完成后,在MainVerticle中新增入口main函数:

public static void main(String[] args) {
    Vertx vertx = Vertx.vertx();
    vertx.deployVerticle(new MainVerticle());
  }

配置jib-maven-plugin插件:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>3.2.0</version>
  <configuration>
    <from>
      <image>java:openjdk-8-jdk-alpine</image>
    </from>
      <image>${project.groupId}-${project.artifactId}:${project.version}</image>
    </to>
    <container>
      <mainClass>${main.verticle}</mainClass>
    </container>
  </configuration>
</plugin>

构建本地镜像:

mvn compile jib:dockerBuild

构建完成后,Docker里面就会多一个镜像:

docker wsl docker wsl2有必要吗_Docker_14

右键镜像,创建对应的容器,配置如下:

docker wsl docker wsl2有必要吗_docker_15

然后点击“run”,程序就可以跑起来了,也可以通过Attached Console来看程序的打印日志:

docker wsl docker wsl2有必要吗_docker_16

访问http://localhost:8888测试程序:

docker wsl docker wsl2有必要吗_Windows_17