前些天在小编在自己的VirtualBox安装了Docker,一直是采用dos命令对docker进行操作。于是打算了采用Java程序来管理docker,无奈,在网上找了半天也没有关于这样的贴子,于是自己琢磨的半天,终于是成功了。现在和大家一起分享。目前我是采用的是docker toolbox,下面是链接,后续我将采用VirtualBox虚拟机来链接,原因我会在文章结尾说明。
https://get.daocloud.io/toolbox/
一、环境配置
1、PC机一台,安装VirtualBox虚拟机(我用的是Ubuntu14版本)
2、eclipse开发环境
3、jdk1.8
二、导入依赖
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.0.6</version>
</dependency>
三、编写程序
public static void main(String[] args) {
//使用DockerClientBuilder创建链接
DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://192.168.99.100:2376").build();
//设置Container暴露的端口:如tomcat端口是8080
ExposedPort tcp8080 = ExposedPort.tcp(8080);
//设置映射到主机的端口
Ports portBindings = new Ports();
portBindings.bind(tcp8080, Ports.Binding.bindPort(8089));
//创建一个新的Container并且与主机端口号绑定
CreateContainerResponse container1 = dockerClient.createContainerCmd("tomcat:latest")
.withPortBindings(portBindings).exec();
//运行一个Container
dockerClient.startContainerCmd(container1.getId()).exec();
}
需要注意的问题:
1、虚拟机的防火墙要处于关闭状态,或者允许你想要暴露的端口或者ip为allow(个人建议关闭防火墙)
2、虚拟机的网络链接是桥接或者是host-only模式(采用dockertoolbox使用默认配置就好了)
3、如果拟采用的是VirtualBox虚拟机,那么你需要找到docker运行的端口,docker默认没有与(2376)端口绑定.需要自己绑定。而使用toolbox他自己给你绑定好了端口。可以直接使用。
4、使用ifconfig命令查看主机ip,将IP:port填入创建链接的getInstance中(程序中我已经写明)
以上就可以使用Java程序来远程管理Docker了,docker-java提供了丰富的接口,可以满足对Docker的操作。