栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java操作dockerAPI(实时更新)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java操作dockerAPI(实时更新)

Java操作dockerAPI

https://github.com/docker-java/docker-java

开放docker端口

操作步骤:

  1. docker安装

  2. 进入docker.service

    cd /lib/systemd/system/
    vim docker.service
    
  3. 修改docker.service

    找到Execstart=/usr/bin/dockerd 不管其之后是什么在这句话的最后加上

    注意:是加上,不修改原有的内容,只是增添

    -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 
    

    保存:wq

  4. 重启docker服务

    systemctl daemon-reload//重新加载docker服务的配置文件
    
    service docker restart//重启启动docker
     
    systemctl stats docker//可以查看相关内容,看看2375是否已经设置好
    
    netstat -nlp |grep 2375//可以查看2375是否已经被监听
    
  5. 开放防火墙2375端口

#查看防火墙端口信息
firewall-cmd --list-ports
#开放端口
firewall-cmd --zone=public --add-port=2375/tcp -permanent

--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

#重启防火墙
service firewalld restart

​ 6.在浏览器中输入 服务器IP:2375/info,获得json数据,检查是否开启成功

直接开放0.0.0.0端口存在一定被入侵风险, 容易被恶意脚本袭击(亲测)

解决方案:自制安全认证证书 有待学习

docker-java集成使用

Dependencies:

```xml

        com.github.docker-java
        docker-java
        
        3.2.12
    
```

Service:

package com.jay.docker.service;

import com.alibaba.fastjson.JSONObject;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.Info;
import com.github.dockerjava.api.model.Ports;
import com.github.dockerjava.core.DockerClientBuilder;

import static com.github.dockerjava.api.model.HostConfig.newHostConfig;

public class DockerClientService {
    
    public DockerClient connectDocker(){
        DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://xxxx:2375").build();
        Info info = dockerClient.infoCmd().exec();
        String infoStr = JSONObject.toJSONString(info);
        System.out.println("docker的环境信息如下:=================");
        System.out.println(info);
        return dockerClient;
    }
    
    
    public CreateContainerResponse createContainers(DockerClient client,String containerName,String imageName){
        //映射端口8088—>80
        ExposedPort tcp80 = ExposedPort.tcp(80);
        Ports portBindings = new Ports();
        portBindings.bind(tcp80, Ports.Binding.bindPort(8088));

        CreateContainerResponse container = client.createContainerCmd(imageName)
                .withName(containerName)
                .withHostConfig(newHostConfig().withPortBindings(portBindings))
                .withExposedPorts(tcp80).exec();
        return container;
    }


    
    public void startContainer(DockerClient client,String containerId){
        client.startContainerCmd(containerId).exec();
    }

    
    public void removeContainer(DockerClient client,String containerId){
        client.removeContainerCmd(containerId).exec();
    }

}
docker-java详解 Dependencies
  • com.github.docker-java:docker-java-core 用于 DockerClient连接

  • one of com.github.docker-java:docker-java-transport-* 与 Docker 守护进程通信

实例化DockerClientConfig
  • 您将需要一个 DockerClientConfig 实例来告诉库如何访问 Docker,使用哪些凭据从 Docker 注册表中提取
  • 构建器可用,并允许您配置客户端的每个属性
DockerClientConfig standard = DefaultDockerClientConfig.createDefaultConfigBuilder().build();


DockerClientConfig custom = DefaultDockerClientConfig.createDefaultConfigBuilder()
    //Docker 主机 URL
    .withDockerHost("tcp://docker.somewhere.tld:2376")
    //启用/禁用 TLS 验证(在 http 和 https 协议之间切换)
    .withDockerTlsVerify(true)
    //TLS 验证所需证书的路径
    .withDockerCertPath("/home/user/.docker")
    //您的注册表用户名(推送容器所需)
    .withRegistryUsername(registryUser)
    //您的注册表密码
    .withRegistryPassword(registryPass)
    //您的注册邮箱
    .withRegistryEmail(registryMail)
    //您的注册地址
    .withRegistryUrl(registryUrl)
    .build();


//DOCKER_ConFIG 其他 docker 配置文件的路径(如 .dockercfg)
//api.version API 版本,例如1.23
  • 三种配置方式

    • Properties (docker-java.properties)
    • System Properties:
    • System Environment

参考:

  • docker-java
  • 开放端口
  • api
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号