国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

docker-java 用Java操作docker創(chuàng)建容器并運行運行容器

這篇具有很好參考價值的文章主要介紹了docker-java 用Java操作docker創(chuàng)建容器并運行運行容器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??開啟Docker遠程訪問

參考上一篇文章:Docker設(shè)置開啟遠程訪問

??創(chuàng)建項目并引入docker-java依賴


        <!-- docker java -->
        <dependency>
            <groupId>com.github.docker-java</groupId>
            <artifactId>docker-java</artifactId>
            <version>3.2.13</version>
        </dependency>

        <!-- docker java httpclient -->
        <dependency>
            <groupId>com.github.docker-java</groupId>
            <artifactId>docker-java-transport-httpclient5</artifactId>
            <version>3.2.13</version>
        </dependency>

Apache HttpClient 5介紹:

This transport is based on Apache HttpClient library version 5, which has a great flexibility and allows us to implement all Docker-specific features and protocols required, without having to use internal APIs or anything.
It has everything to become the default transport of docker-java in future releases.

Apache HttpClient 5基于Apache HttpClient庫實現(xiàn),具有很大的靈活性,我們無需使用docker內(nèi)部API,就可以實現(xiàn)所有Docker特定功能和協(xié)議。并且在未來的版本中,它將成為docker java的默認傳輸工具。

除Apache HttpClient 5以外,還可以使用Zerodep、OkHttp、Jersey和Netty實現(xiàn)docker的連接傳輸。

docker的一些配置選項

訪問docker的配置

docker:
  host: tcp://192.168.1.17:2375
  api-version: 1.41

??連接docker

import com.github.dockerjava.core.DockerClientConfig
import com.github.dockerjava.core.DefaultDockerClientConfig


    /**
     * 連接docker服務(wù)器
     *
     * @return
     */
    public DockerClient connect() {
        // 配置docker CLI的一些選項
        DefaultDockerClientConfig config = DefaultDockerClientConfig
                .createDefaultConfigBuilder()
                .withDockerTlsVerify(DOCKER_TLS_VERIFY)
                .withDockerHost(HOST)
                // 與docker版本對應(yīng),參考https://docs.docker.com/engine/api/#api-version-matrix
                // 或者通過docker version指令查看api version
                .withApiVersion(API_VERSION)
                .withRegistryUrl(REGISTRY_URL)
                .build();

        // 創(chuàng)建DockerHttpClient
        DockerHttpClient httpClient = new ApacheDockerHttpClient
                .Builder()
                .dockerHost(config.getDockerHost())
                .maxConnections(100)
                .connectionTimeout(Duration.ofSeconds(30))
                .responseTimeout(Duration.ofSeconds(45))
                .build();

        DockerClient dockerClient = DockerClientImpl.getInstance(config, httpClient);
        Info info = dockerClient.infoCmd().exec();
        String infoStr = JSONObject.toJSONString(info);
        System.out.println("docker環(huán)境信息");
        System.out.println(infoStr);
        return dockerClient;
    }

額外的一些配置

  • DOCKER_HOST Docker的地址,比如: tcp://localhost:2376 或者unix:///var/run/docker.sock
  • DOCKER_TLS_VERIFY 是否開啟 TLS 驗證 (httphttps 之間切換)
  • DOCKER_CERT_PATH TLS 驗證的證書路徑
  • DOCKER_CONFIG 其他docker配置文件的路徑 (比如 .dockercfg)
  • api.version API version版本
  • registry.url 下載源地址(docker鏡像存放的地址)
  • registry.username 登陸用戶名 (推送鏡像到docker云倉庫時需要)
  • registry.password 登陸用戶密碼(推送鏡像到docker云倉庫時需要)
  • registry.email 登陸賬戶的郵箱(推送鏡像到docker云倉庫時需要)

??拉取鏡像


    /**
     * 拉取鏡像
     *
     * @param client
     * @param imageName
     * @return
     * @throws InterruptedException
     */
    public boolean pullImage(DockerClient client, String imageName) {
        boolean isSuccess = false;
        try {
            isSuccess = client.pullImageCmd(imageName)
                    .start()
                    .awaitCompletion(30, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        } finally {
            return isSuccess;
        }
    }

??查看鏡像信息


    /**
     * 查看鏡像詳細信息
     *
     * @param client
     * @param imageName
     * @return
     */
    public String inspectImage(DockerClient client, String imageName) {
        InspectImageResponse response = client.inspectImageCmd(imageName).exec();
        System.out.println(response.toString());
        System.out.println(JSONObject.toJSONString(response));
        return JSONObject.toJSONString(response);
    }

??刪除鏡像


    /**
     * 刪除鏡像
     *
     * @param client
     * @param imageName
     */
    public void removeImage(DockerClient client, String imageName) {
        client.removeImageCmd(imageName).exec();
    }

??構(gòu)建鏡像

    /**
     * 構(gòu)建鏡像
     *
     * @param client
     * @param dockerProp
     * @return
     */
    public String buildImage(DockerClient client, DockerProp dockerProp) {
        ImmutableSet<String> tag = ImmutableSet.of(dockerProp.getImageName() + ":" + dockerProp.getImageTag());
        String imageId = client.buildImageCmd(new File(dockerProp.getDockerfilePath()))
                .withTags(tag)
                .start()
                .awaitImageId();
        return imageId;
    }

??給鏡像打tag

    /**
     * 給鏡像打tag
     * @param client
     * @param dockerProp
     */
    public void tagImage(DockerClient client, DockerProp dockerProp) {
        client.tagImageCmd(dockerProp.getImageName(), dockerProp.getRespository(), dockerProp.getTag()).exec();
    }

??加載鏡像文件


    /**
     * 加載鏡像文件
     *
     * @param client
     * @param inputStream
     */
    public static void loadImage(DockerClient client, InputStream inputStream) {
        client.loadImageCmd(inputStream).exec();
    }

??獲取鏡像列表

    /**
     * 獲取鏡像列表
     *
     * @param client
     * @return
     */
    public List<Image> imageList(DockerClient client) {
        List<Image> imageList = client.listImagesCmd().withShowAll(true).exec();
        return imageList;
    }

??創(chuàng)建容器

/**
     * 創(chuàng)建容器
     *
     * @param client
     * @return
     */
    public CreateContainerResponse createContainers(DockerClient client, DockerProp dockerProp) {
        // 端口綁定
        Map<Integer, Integer> portMap = Optional.ofNullable(dockerProp).map(DockerProp::getPartMap).orElse(new HashMap<>());
        Iterator<Map.Entry<Integer, Integer>> iterator = portMap.entrySet().iterator();
        List<PortBinding> portBindingList = new ArrayList<>();
        List<ExposedPort> exposedPortList = new ArrayList<>();
        while (iterator.hasNext()) {
            Map.Entry<Integer, Integer> entry = iterator.next();
            ExposedPort tcp = ExposedPort.tcp(entry.getKey());
            Ports.Binding binding = Ports.Binding.bindPort(entry.getValue());
            PortBinding ports = new PortBinding(binding, tcp);
            portBindingList.add(ports);
            exposedPortList.add(tcp);
        }

        CreateContainerResponse container = client.createContainerCmd(dockerProp.getImageName())
                .withName(dockerProp.getContainerName())
                .withHostConfig(newHostConfig().withPortBindings(portBindingList))
                .withExposedPorts(exposedPortList).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();
    }

部分代碼未展示,全部代碼請點擊源碼查看源碼:https://github.com/BerBai/JavaExample/tree/master/dockerjavademo

參考
https://github.com/docker-java/docker-java/blob/master/docs/getting_started.md
https://docs.docker.com/

其他系列文章

docker 安裝 與 卸載 centos
Windows11 安裝Docker,安裝至D盤(其他非C盤皆可)
Windows11 Docker鏡像存儲路徑更改(非C盤路徑)

Dockerfile 文件結(jié)構(gòu)、docker鏡像構(gòu)建過程詳細介紹
Dockerfile文件中CMD指令與ENTRYPOINT指令的區(qū)別
構(gòu)建Docker鏡像指南,含實戰(zhàn)案例
Docker 制作自定義化的Tomcat鏡像
docker 安裝 mysql 并映射數(shù)據(jù)庫存放路徑及配置文件
docker安裝tomcat 映射配置文件、日志文件
docker安裝nginx,配置nginx,并成功訪問
docker安裝redis并將配置文件和數(shù)據(jù)文件映射到外部
Docker 容器互聯(lián) --link 和 自定義網(wǎng)絡(luò)
docker 完成 redis集群搭建
Docker Compose 簡介、安裝、初步體驗
Docker Compose學(xué)習(xí)之docker-compose.yml編寫規(guī)則 及 實戰(zhàn)案例
Docker Compose配置springboot微服務(wù)項目
Docker Swarm 初步認識 及 集群搭建
Docker設(shè)置開啟遠程訪問
docker-java 用Java操作docker創(chuàng)建容器并運行運行容器

VMware配置網(wǎng)絡(luò),主機互通,可上網(wǎng)文章來源地址http://www.zghlxwxcb.cn/news/detail-408992.html

到了這里,關(guān)于docker-java 用Java操作docker創(chuàng)建容器并運行運行容器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • docker-java

    2.1 docker已安裝 2.2 運行程序用戶的docker使用權(quán)限 默認docker安裝后是root權(quán)限運行的,比如運行程序的用戶是admin用戶,則需要將admin用戶加加入到docker用戶組 gpasswd -a admin docker systemctl restart docker 2.3 docker.service 的訪問方式,需要開啟tcp訪問默認,不然可能導(dǎo)致非root用戶運行程序

    2024年02月10日
    瀏覽(21)
  • docker export,import后無法運行,如java命令找不到,運行后容器內(nèi)編碼有問題

    為什么用docker export呢,??~由于客戶環(huán)境太惡心了,測試一次更是麻煩,所以什么都得在本地調(diào)試完成,爭取每次測試+上線一次通過才行,說多了都是淚。 由于踩坑幾次了,每次都忘記,且每次網(wǎng)上找半天也難以發(fā)現(xiàn)問題,今日決定記錄一筆。 在進行docker export導(dǎo)出鏡像,然

    2024年02月15日
    瀏覽(23)
  • 使用Docker容器部署java運行環(huán)境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    使用Docker容器部署java運行環(huán)境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    環(huán)境:阿里云ECS服務(wù)器 1.1 安裝工具 1.2 為yum源添加docker倉庫位置 1.3 將軟件包信息提前在本地索引緩存 (非必要,建議執(zhí)行,可以提升yum安裝的速度,報錯去掉fast試試) 1.4 安裝Docker 傻瓜式安裝 點擊y 1.5 啟動Docker 1.6 設(shè)置開機自啟動 1.7 安裝完成后可以測試一下,是否安裝成功

    2024年02月02日
    瀏覽(32)
  • 輕松上手Docker:學(xué)習(xí)如何創(chuàng)建和運行自己的Docker容器

    輕松上手Docker:學(xué)習(xí)如何創(chuàng)建和運行自己的Docker容器

    容器化技術(shù),它是一種虛擬化技術(shù),用于在計算機系統(tǒng)中隔離和運行應(yīng)用程序。容器將應(yīng)用程序及其所有依賴項打包到一個獨立的、可移植的環(huán)境中,使其能夠在不同的計算機或操作系統(tǒng)上運行。 容器的特點 :隔離性、輕量級、可移植性、彈性伸縮、生態(tài)系統(tǒng)。 目前最流行

    2024年02月04日
    瀏覽(24)
  • 環(huán)境配置 | win10上配置Docker,創(chuàng)建容器并運行【圖文詳解】

    環(huán)境配置 | win10上配置Docker,創(chuàng)建容器并運行【圖文詳解】

    本文利用圖文,詳解了在win10上如何配置Docker,創(chuàng)建容器并運行,超簡單版~ 電腦環(huán)境:windows10家庭版 一定要確認好版本:查看自己的電腦版本,以下操作win10家庭版和專業(yè)版都可以。 點擊右側(cè)的getDocker 即可,可以看到按鈕上面對操作系統(tǒng)的要求為win10專業(yè)版 或企業(yè)版64位,

    2024年02月07日
    瀏覽(25)
  • Docker已經(jīng)創(chuàng)建運行啟動的容器,如何修改容器中的環(huán)境變量env使長期有效

    Docker已經(jīng)創(chuàng)建運行啟動的容器,如何修改容器中的環(huán)境變量env使長期有效

    [root@jenkins ~]# docker info | grep ‘Docker Root’ Docker Root Dir: /data/docker 方式一: 方式二: docker ps -a --no-trunc |grep pdmaas 2bd5ad1314bfff05099142aae2f896fc4c3ee6b640160d27fb7c4d8ce1d5aead pdmaas:1.3.2 “bash start.sh” 4 weeks ago Exited (137) 28 minutes ago pdmaas 建議:修改前先備份 建議:修改前先備份 或 json文件

    2024年02月08日
    瀏覽(26)
  • ubuntn之容器的基本操作(安裝docker|運行容器|portainer)

    ubuntn之容器的基本操作(安裝docker|運行容器|portainer)

    目錄 一、安裝Docker引擎 ????????1.方法一:手動安裝(手動添加軟件源)? ? ? ? ????????2、方法二:腳本自動化安裝 ?二、安裝后的檢查操作 三、運行一個容器 四、進入容器 五、鏡像生命周期管理 一、鏡像part 二、創(chuàng)建容器、啟動容器 三、暫停/繼續(xù)容器 四、 終

    2024年01月18日
    瀏覽(19)
  • 【docker】容器的運行、停止、查看等基本操作

    【docker】容器的運行、停止、查看等基本操作

    Docker image是一個 read-only 文件,位于磁盤上 這個文件包含文件系統(tǒng),源碼,庫文件,依賴,工具等一些運行application所需要的文件 可以理解成一個模板 docker image具有分層的概念 一個運行中的docker image,位于內(nèi)存中 實質(zhì)是復(fù)制image并在image最上層加上一層 read-write 的層(稱之為

    2024年02月10日
    瀏覽(20)
  • 【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    微服務(wù)雖然具備各種各樣的優(yōu)勢,但服務(wù)的拆分通用給部署帶來了很大的麻煩。 分布式系統(tǒng)中,依賴的組件非常多,不同組件之間部署時往往會產(chǎn)生一些沖突。 在數(shù)百上千臺服務(wù)中重復(fù)部署,環(huán)境不一定一致,會遇到各種問題 1.1.1.應(yīng)用部署的環(huán)境問題 大型項目組件較多,運

    2024年02月04日
    瀏覽(32)
  • docker基本操作:安裝部署、設(shè)置ssh遠程登入、配置docker鏡像文件并創(chuàng)建docker容器

    Docker 是一個流行的應(yīng)用程序容器化和部署平臺,允許開發(fā)人員輕松地創(chuàng)建、部署和管理容器中的應(yīng)用程序。 請注意運行此命令需要 root 或 sudo 權(quán)限,因此可能需要在命令前加上 sudo 并輸入密碼。 一、更新系統(tǒng)工具(ubuntu) 安裝docker 查看docker版本 啟動docker服務(wù) 二、一些基本

    2024年02月04日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包