之前在项目里配置了连接本地Docker,但是因为昨天有人提交了配置文件,我也没注意就把我自己的覆盖了…配置没了…于是重新回想了一下,顺便写个博客记录一下
环境
项目环境:SpringBoot 2.1.6 + JDK1.8
Java_Docker版本:java-docker 3.1.5
Docker版本:Docker for Windows 19.03.1
步骤
- 安装Docker 略
- 开启Docker的tcp连接
右键Docker-Settings-General-开启Expose daemon on tcp://…
- 在项目中添加java-docker依赖
<!-- docker-java 依赖 -->
<!-- https://mvnrepository.com/artifact/com.github.docker-java/docker-java -->
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.1.5</version>
</dependency>
- 在项目中配置java-docker
在配置文件中添加:docker:host(可省略),配置的地址就是第二步中开启的.
#docker配置
docker:
host: tcp://localhost:2375
添加Docker的Bean注入
package com.jytd.sdntest.common.config;
import com.alibaba.fastjson.JSONObject;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.model.Info;
import com.github.dockerjava.core.DockerClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DockerConfig {
@Value("${docker.host}")
private String dockerHost;
@Bean
public DockerClient connectDocker(){
DockerClient dockerClient = DockerClientBuilder.getInstance(dockerHost).build();
Info info = dockerClient.infoCmd().exec();
String infoStr = JSONObject.toJSONString(info);
System.out.println("docker的环境信息如下:=================");
System.out.println(info);
return dockerClient;
}
}
结果
配置成功之后,启动项目就可以看到连接信息打印出来了(只截了一部分)
接下来就可以在项目中连接并使用Docker了.
我只用了一小点.所以贴一点出来,具体的各种可供使用的函数可以参考其他资料
//创建容器
//获取一个可用的端口
String port=this.getPort();
String containerName="vnc-"+port;
//在该端口开启一个容器,-name指定名字,以便关闭和获取
//在指定端口创建指定名称的容器
CreateContainerResponse container=this.createContainer(containerName,"dorowu/ubuntu-desktop-lxde-vnc",port);
//启动刚刚创建的容器
this.startContainer(container.getId());
问题
当时查资料,看到Linux的Docker修改配置文件是可以实现IP远程连接的.windows的目前我只能localhost连接本机,所以也不知道能不能让别人远程连我的.暂时只能做到这样.