# JDocker
**Repository Path**: ahpy/JDocker
## Basic Information
- **Project Name**: JDocker
- **Description**: JDocker 是一个基于 Docker1.12开发出的开发包,通过封装 Docker API 使开发这可以快速的使用 Java 开发出控制和操作 Docker 的代码.使用流式操作,简单明了。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 38
- **Created**: 2018-08-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#JDocker
基于 Docker1.12+ (Docker API 1.24+) 开发出的开发包,通过封装 Docker API 使开发者可以快速的使用 Java 开发出控制和操作 Docker 的应用,使用流式操作,简单明了。
完善的测试用例覆盖率达87%。
####JDocker 是 Voovan 开源项目的一个子项目,自然是依赖于 voovan开源项目的。
**交流QQ群:**454201740

[](https://www.apache.org/licenses/LICENSE-2.0.html)
[](https://maven-badges.herokuapp.com/maven-central/org.voovan/JDocker)

[](https://git.oschina.net/helyho/Voovan/raw/master/voovan-framework.jar)
------------------------
####重要更新
- 2017-03-16 [1.0-beta-2] Cmd类增加了 Connect 的三个重载函数,现在构造完 Cmd 后需要 connet 来连接 Docker.
- public void connect()
> `DockerGlobal 中配置的默认连接方式`
- public void connect(int timeOut)
> `DockerGlobal 中配置的默认连接方式,指定超时事件`
- public void connect(String host, int port, int timeOut)
> `指定 Docker 主机连接`
- 2017-01-22 [1.0-beta-1] 增加对 Docker Api 1.25 的支持。
- 2016-12-05 完成 Docker Api 1.24 的支持。
-----------------------
####Maven 支持:
```xml
org.voovan
JDocker
1.5.3
```
------------------------
####对 Voovan 项目的Maven依赖:
```xml
org.voovan
voovan-framework
1.0
```
------------------------
Voovan 所有 Maven 支持请访问:[Voovan on maven](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.voovan%22)
------------------------
####通过设置`org.voovan.docker.DockerGlobal`中的环境变量来连接至 Docker。
```java
public static String DOCKER_REST_HOST = "127.0.0.1";
public static int DOCKER_REST_PORT = 2735;
public static String DOCKER_REST_CHARSET = "UTF-8";
public static int DOCKER_REST_TIMEOUT = 5;
public static boolean DEBUG = false;
```
------------------------
####使用 JDocker 创建一个容器:
```java
//构造一个创建命令
CmdContainerCreate createCmd = CmdContainerCreate.newInstance("d_test");
createCmd.connect();
//使用流式操作来创建容器
Object data = createCmd.image("alpine").network("bridge")
.volume("v_tx:/v_tx").link("dockerfly:dockerfly")
.cmd("ping","127.0.0.1").env("author=helyho")
.exposePort(22,"tcp","2222").send();
createCmd.close();
Logger.info(formatJSON(data));
```
具体使用请参照 `org.voovan.docker.test.command`测试用例。
------------------------
####如何开启 Docker 的 Remote API?
由于 Docker 默认是使用 unixsock 提供服务,我们可以使用以下两种方式打开端口:
- **通过 socat 将 unixsocket 转换成 TCP 的 Socket 监听**
`socat tcp4-listen:2735,reuseaddr,fork unix-connect:/var/run/docker.sock`
- **开启 Docker TCP 监听端口**
修改 Docker 服务启动参数,添加一个没有被占用的端口号
` # vim /etc/default/docker`
` DOCKER_OPTS='-H 127.0.0.1:2735'`
重启 Docker 服务生效.
**第二种方法我从网上找来,我自己没有实验成功,经过我研究找到了第一种方法,并且一直使用第一种方法,很简单而且有效.**
以上的配置对应`org.voovan.docker.DockerGlobal`中的这两个参数:
```java
public static String DOCKER_REST_HOST = "127.0.0.1";
public static int DOCKER_REST_PORT = 2735;
```