zoukankan      html  css  js  c++  java
  • java操作docker示例(docker-java)

    1、首先要修改docker服务器的 /usr/lib/systemd/system/docker.service,加入紫色框的配置

    2、下载docker-java 的github源码

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

    3、本人这里是在windows上用gitbash构建的

    cd docker-java/
    mvn install -Dmaven.test.skip=true

    构建成功后在maven生成jar包

    4、新建一个工程来使用该jar包

    pom.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.boshen.simple</groupId>
        <artifactId>docker-java-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>com.github.docker-java</groupId>
                <artifactId>docker-java</artifactId>
                <version>3.1.3-SNAPSHOT</version>
            </dependency>
            <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-nop</artifactId>
                 <version>1.7.2</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.4</version>
            </dependency>
        </dependencies>
    
    
    
    </project>

    以上红色加粗的是必要的

    1)操作容器的工具类:DockerClientService

    package com.simple.docker.util;
    
    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 {
        /**
         * 连接docker服务器
         * @return
         */
        public DockerClient connectDocker(){
            DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://192.168.137.12:2375").build();
            Info info = dockerClient.infoCmd().exec();
            String infoStr = JSONObject.toJSONString(info);
            System.out.println("docker的环境信息如下:=================");
            System.out.println(info);
            return dockerClient;
        }
    
        /**
         * 创建容器
         * @param client
         * @return
         */
        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;
        }
    
    
        /**
         * 启动容器
         * @param client
         * @param containerId
         */
        public void startContainer(DockerClient client,String containerId){
            client.startContainerCmd(containerId).exec();
        }
    
        /**
         * 启动容器
         * @param client
         * @param containerId
         */
        public void stopContainer(DockerClient client,String containerId){
            client.stopContainerCmd(containerId).exec();
        }
    
        /**
         * 删除容器
         * @param client
         * @param containerId
         */
        public void removeContainer(DockerClient client,String containerId){
            client.removeContainerCmd(containerId).exec();
        }
    
    }

    测试:创建容器

    package com.simple.docker;
    
    import com.github.dockerjava.api.DockerClient;
    import com.github.dockerjava.api.command.CreateContainerResponse;
    import com.simple.docker.util.DockerClientService;
    
    public class CreateAndStartContainer {
    
    
        public static void main(String[] args){
            DockerClientService dockerClientService =new DockerClientService();
            //连接docker服务器
            DockerClient client = dockerClientService.connectDocker();
            //创建容器
            CreateContainerResponse container = dockerClientService.createContainers(client,"nginx1","nginx:latest");
            //启动容器
            dockerClientService.startContainer(client,container.getId());
        }
    
    }

    其他测试省略

    更多使用方法可以查看下载出来的源码的Test部分

  • 相关阅读:
    (转)ubuntu 对拍和基本操作
    一个在线翻译LateX的网站
    51nod 1376: 最长递增子序列的数量(二维偏序+cdq分治)
    BZOJ1087: [SCOI2005]互不侵犯King(状态压缩动态规划)
    ZOJ Problem Set
    bzoj2301:[HAOI2011]Problem b(容斥+莫比乌斯反演+分块)
    BZOJ 4318 OSU!期望DP
    CodeForces 235B Let's Play Osu!(概率)
    博客界面美化
    A+B Problem
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/10714414.html
Copyright © 2011-2022 走看看