docker-java 操作docker

部署docker

10分钟学会Docker的安装和使用_docker安装-CSDN博客文章浏览阅读2.5w次,点赞44次,收藏279次。文章目录Docker简介Docker安装Windows安装Linux安装CentOS安装Ubuntu安装最近花了些时间学习docker技术相关,在此做一些总结,供往后复查和像了解docker的学习。Docker简介简而言之,Docker 是一个可供开发者通过容器(container)来构建,运行和共享应用(application)的平台。用容器来部署应用被称为集装箱化(containerization)。想了解更多信息可到docker官网查看。Docker安装Windows安装开启Hyper_docker安装https://blog.csdn.net/baidu_36511315/article/details/108117826Kubeadm部署k8s集群 && kuboard_docker网络kernel: br-4bb47f9dd94a: port 4(vethe833ba-CSDN博客文章浏览阅读572次。k8s安装_docker网络kernel: br-4bb47f9dd94a: port 4(vethe833ba1) entered blocking stathttps://blog.csdn.net/mengo1234/article/details/133899415

docker 配置harbor仓库连接

docker 登录本地仓库harbor问题_harbor本地登录-CSDN博客文章浏览阅读309次。docker 登录 harbor问题_harbor本地登录https://blog.csdn.net/mengo1234/article/details/133746171

docker配置远程启动

https://www.cnblogs.com/senior-shef/p/17722219.htmlhttps://www.cnblogs.com/senior-shef/p/17722219.html

前提需要docker开启通信功能,有多种开启方式,我使用的是修改注册服务时的配置文件docker.service:

复制代码
vim /usr/lib/systemd/system/docker.service
复制代码
ExecStart  添加远程Api启动命令  
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
复制代码
[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity

LimitNPROC=infinity

TimeoutStartSec=0

Delegate=yes

KillMode=process

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

docker-Java 连接docker

官网文档 github地址

docker-java/docs/README.md at main · docker-java/docker-java · GitHubJava Docker API Client. Contribute to docker-java/docker-java development by creating an account on GitHub.https://github.com/docker-java/docker-java/blob/main/docs/README.md配置maven

复制代码
        <!-- docker -->
        <!-- https://mvnrepository.com/artifact/com.github.docker-java/docker-java -->
        <dependency>
            <groupId>com.github.docker-java</groupId>
            <artifactId>docker-java</artifactId>
            <version>3.3.6</version>
        </dependency>

创建client类

复制代码
package cn.fnii.common.docker;

import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientBuilder;

import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.transport.DockerHttpClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.time.Duration;

@Component
public class BaseDockerClientProxy {
    private DockerClient dockerClient;

    @Value("${docker.host}")
    private String serverUrl;

    @Value("${docker.registry.url}")
    private String registryUrl;

    @Value("${docker.registry.user}")
    private String registryUser;

    @Value("${docker.registry.pass}")
    private String registryPass;



    @Autowired
    public void setDockerClient() {
        // 这里就是获取dockerClient的方法了
        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
            .withDockerHost(serverUrl)
//            .withDockerTlsVerify(true)
//            .withDockerCertPath("/home/user/.docker")
            .withRegistryUsername(registryUser)
            .withRegistryPassword(registryPass)
//            .withRegistryEmail(registryMail)
            .withRegistryUrl(registryUrl)
            .build();

        dockerClient = DockerClientBuilder.getInstance(config).build();
    }

    public DockerClient getDockerClient() {
        return dockerClient;
    }

}

yml配置

复制代码
docker:
  host: tcp://172.171.16.232:2375
  registry:
    url: harbor.nl.com
    user: admin
    pass: XXXX

测试docker的查询和上传镜像

测试类

复制代码
@Slf4j
@SpringBootTest
@ActiveProfiles("dev")
public class DockerTest {

    @Autowired
    private BaseDockerClientProxy baseDockerClientProxy;

    @Test
    public void test1() {
        List<Image> exec = baseDockerClientProxy.getDockerClient().listImagesCmd().exec();
        for (int i = 0; i < exec.size(); i++) {
            System.out.println(exec.get(i).getRepoTags());
        }
    }


    @Test
    public void test2() {
        PushImageResultCallback exec = baseDockerClientProxy.getDockerClient().pushImageCmd("harbor.nl.com/demo/test:1").exec(new PushImageResultCallback());
        exec.awaitSuccess();
        exec.toString();
    }


}
相关推荐
zhangfeng11331 小时前
openclaw skills 小龙虾技能 通讯仿真 matlab skill Simulink Agentic Toolkit,通过kimi找到,mcp通讯
开发语言·matlab·openclaw·通讯仿真
Javatutouhouduan8 小时前
2026Java面试的正确打开方式!
java·高并发·java面试·java面试题·后端开发·java编程·java八股文
chao1898448 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
JAVA面经实录9178 小时前
Java初级最终完整版学习路线图
java·spring·eclipse·maven
赏金术士8 小时前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
亚空间仓鼠9 小时前
Docker容器化高可用架构部署方案(六)
docker·容器·架构
前端老曹9 小时前
Docker 从入门到放弃:完整指南
运维·docker·容器
Cat_Rocky9 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes
楼兰公子9 小时前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
知识领航员10 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github