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();
    }


}
相关推荐
MC丶科14 分钟前
Java设计模式漫画英雄宇宙-工厂模式 —Factory博士的“超级英雄制造机”!
java·设计模式·漫画
q***318321 分钟前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
虎子_layor23 分钟前
告别Redis瓶颈:Caffeine本地缓存优化实战指南
java·后端
q***985226 分钟前
什么是Spring Boot 应用开发?
java·spring boot·后端
带刺的坐椅26 分钟前
Solon AI 开发学习4 - chat - 模型实例的构建和简单调用
java·ai·chatgpt·solon
hadage23329 分钟前
--- JavaScript 的一些常用语法总结 ---
java·前端·javascript
合作小小程序员小小店34 分钟前
桌面安全开发,桌面二进制%恶意行为拦截查杀%系统安全开发3.0,基于c/c++语言,mfc,win32,ring3,dll,hook,inject,无数据库
c语言·开发语言·c++·安全·系统安全
合作小小程序员小小店34 分钟前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#
Codeking__37 分钟前
C++ 11 atomic 原子性操作
开发语言·c++
懂得节能嘛.43 分钟前
【Java动态线程池】Redis监控+动态调参
java·开发语言·redis