java docker java api_Java API 操作Docker示例

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。

1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…

2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。

3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!

博客导航跳转(请收藏):邵奈一的技术博客导航

| 公众号 | 微信 | 微博 | CSDN | 简书 |

0x00 教程内容

安装并配置Docker

Java API 操作Docker

检验

说明:本教程最好需要有点Docker基础与编程基础,可以参考本博客的其他内容进行学习。

0x01 安装并配置Docker

1. 安装Docker

安装位置直达=> 传送门

2. 配置Docker开放2375端口

默认情况下,Docker通过守护进程Unix socket(/var/run/docker.sock)来进行本地进程通信,但此进程只能在本地使用Docker客户端或者Docker API方式进行操作。如果想在其他主机上操作Docker主机,就需要让Docker守护进程打开一个HTTP Socket,以实现远程的通信。

vim /usr/lib/systemd/system/docker.service

加上相应的内容:

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

注意:如果有防火墙,也要放开2375端口。

2815ae400caae11378d52dee5c638c27.png

修改好后,务必要重启Docker:

systemctl daemon-reload

systemctl restart docker

以下命令可以查看是否配置好,并且可以看到2375端口已经被监听了:

73b7eb0e86b60ad631e6fe0a0aabbdee.png

0x02 Java API 操作Docker

1. 引入 docker-java 项目的两种方式

(1)方式一

直接在新建的Maven项目中,添加Maven依赖即可:

com.github.docker-java

docker-java

3.1.5

(2)方式二

将 docker-java 安装到本地Maven中,操作如下:

1、下载 docker-java 的 github 源码(需要安装好 Git)

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

2、安装到本地Maven中

cd docker-java/

mvn install -Dmaven.test.skip=true

2. 新建项目并引入依赖

(1)此处我们使用第一种方式,直接在pom.xml中引入依赖的方式

com.github.docker-java

docker-java

3.1.5

3. 编写代码

(1)新建一个工具类 DockerClientUtils :

package com.shaonaiyi.utils;

import com.github.dockerjava.api.DockerClient;

import com.github.dockerjava.api.command.CreateContainerResponse;

import com.github.dockerjava.core.DockerClientBuilder;

/**

* @Auther: shaonaiyi@163.com

* @Date: 2021/1/10 15:37

* @Description: Java API实现创建Docker容器

*/

public class DockerClientUtils {

/**

* 连接Docker服务器

* @return

*/

public DockerClient connectDocker(String dockerInstance){

DockerClient dockerClient = DockerClientBuilder.getInstance(dockerInstance).build();

dockerClient.infoCmd().exec();

return dockerClient;

}

/**

* 创建容器

* @param client

* @return

*/

public CreateContainerResponse createContainers(DockerClient client, String containerName, String imageName){

CreateContainerResponse container = client.createContainerCmd(imageName)

.withName(containerName)

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

}

}

(2)编程代码来测试(可以直接在DockerClientUtils里直接写main方法):

public static void main(String[] args){

DockerClientUtils dockerClientUtils =new DockerClientUtils();

//连接Docker服务器

DockerClient client = dockerClientUtils.connectDocker("tcp://192.168.128.100:2375");

//创建容器

CreateContainerResponse container = dockerClientUtils.createContainers(client,"sny_hello","hello-world");

//启动容器

dockerClientUtils.startContainer(client,container.getId());

}

注意:192.168.128.100需要修改成自己的 Docker 服务器的ip地址!

0x03 检验

1. 拉取镜像

(1)因为本例子是测试新建容器的API,所以,先得有镜像,我们使用hello-world的镜像(如果已经存在则不需要操作了):

docker run hello-world

17fd54c3c3d87f65ed3d1ee136b8bfee.png

2. 运行创建容器代码

(1)运行代码,则可以看到IDEA显示没有报错:

244c0dbfe5cd3e8481ff5c0f6f9ac204.png

(2)查看服务器,发现已经新建了容器,如图:

62f2b30b7f9e3cb81bbbac16e52dd2c2.png

至此,我们的教程就结束了。

PS:如果重复测试的话,需要先删除容器,命令如下:

docker rm sny_hello

0xFF 总结

邵奈一 原创不易,如转载请标明出处,教育是一生的事业。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值