使用Java-Docker连接Docker记录

之前在项目里配置了连接本地Docker,但是因为昨天有人提交了配置文件,我也没注意就把我自己的覆盖了…配置没了…于是重新回想了一下,顺便写个博客记录一下

环境

项目环境:SpringBoot 2.1.6 + JDK1.8
Java_Docker版本:java-docker 3.1.5
Docker版本:Docker for Windows 19.03.1

步骤

  1. 安装Docker 略
  2. 开启Docker的tcp连接
    右键Docker-Settings-General-开启Expose daemon on tcp://…
    使用Java-Docker连接Docker记录_第1张图片
  3. 在项目中添加java-docker依赖
		
        
        <dependency>
            <groupId>com.github.docker-javagroupId>
            <artifactId>docker-javaartifactId>
            <version>3.1.5version>
        dependency>
  1. 在项目中配置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连接本机,所以也不知道能不能让别人远程连我的.暂时只能做到这样.

你可能感兴趣的:(学习记录)