docker-client 应用实例
来源:互联网 发布:高德数据购买 编辑:程序博客网 时间:2024/06/08 05:44
// Create a client based on DOCKER_HOST and DOCKER_CERT_PATH env vars
final DockerClient docker = DefaultDockerClient.fromEnv().build();
/**
*拉取镜像
*
/
// 1、直接拉取镜像,从dockerhub中拉取
docker.pull("busybox");
///2、私有仓库拉取镜像
// 服务器地址默认为 to "https://index.docker.io/v1/",这里可以改为自己的私有镜像仓库
RegistryAuth registryAuth = RegistryAuth.builder().email("foo@bar.com").username("foobar")
.password("secret-password").serverAddress("https://myprivateregistry.com/v1/").build();
docker.pull("foobar/busybox-private:latest", registryAuth);
//3、另一个实现的简单方法
// You can also set the RegistryAuth for the DockerClient instead of passing everytime you call pull()
DockerClient docker = DefaultDockerClient.fromEnv().registryAuth(registryAuth).build();
/**
*创建容器部分
*
/
// 绑定容器端口到主机端口:Bind container ports to host ports
final String[] ports = {"80", "22"};
final Map<String, List<PortBinding>> portBindings = new HashMap<>();
for (String port : ports) {
List<PortBinding> hostPorts = new ArrayList<>();
hostPorts.add(PortBinding.of("0.0.0.0", port));
portBindings.put(port, hostPorts);
}
// 将容器端口443绑定到自动分配的可用主机端口:Bind container port 443 to an automatically allocated available host port.
List<PortBinding> randomPort = new ArrayList<>();
randomPort.add(PortBinding.randomPort("0.0.0.0"));
portBindings.put("443", randomPort);
final HostConfig hostConfig = HostConfig.builder().portBindings(portBindings).build();
// 创建具有暴露端口的容器:Create container with exposed ports
final ContainerConfig containerConfig = ContainerConfig.builder()
.hostConfig(hostConfig)
.image("busybox").exposedPorts(ports)
.cmd("sh", "-c", "while :; do sleep 1; done")
.build();
final ContainerCreation creation = docker.createContainer(containerConfig);
final String id = creation.id();
// 查健康度,获取容器的元数据:Inspect container
final ContainerInfo info = docker.inspectContainer(id);
// 开启容器:Start container
docker.startContainer(id);
//在运行的容器中执行attached和STDERR命令
// Exec command inside running container with attached STDOUT and STDERR
final String[] command = {"bash", "-c", "ls"};
final ExecCreation execCreation = docker.execCreate(
id, command, DockerClient.ExecCreateParam.attachStdout(),
DockerClient.ExecCreateParam.attachStderr());
final LogStream output = docker.execStart(execCreation.id());
final String execOutput = output.readFully();
// 杀掉一个运行中的容器。:Kill container
docker.killContainer(id);
// 删除一个容器:Remove container
docker.removeContainer(id);
// 关闭一个容器:Close the docker client
docker.close();
final DockerClient docker = DefaultDockerClient.fromEnv().build();
/**
*拉取镜像
*
/
// 1、直接拉取镜像,从dockerhub中拉取
docker.pull("busybox");
///2、私有仓库拉取镜像
// 服务器地址默认为 to "https://index.docker.io/v1/",这里可以改为自己的私有镜像仓库
RegistryAuth registryAuth = RegistryAuth.builder().email("foo@bar.com").username("foobar")
.password("secret-password").serverAddress("https://myprivateregistry.com/v1/").build();
docker.pull("foobar/busybox-private:latest", registryAuth);
//3、另一个实现的简单方法
// You can also set the RegistryAuth for the DockerClient instead of passing everytime you call pull()
DockerClient docker = DefaultDockerClient.fromEnv().registryAuth(registryAuth).build();
/**
*创建容器部分
*
/
// 绑定容器端口到主机端口:Bind container ports to host ports
final String[] ports = {"80", "22"};
final Map<String, List<PortBinding>> portBindings = new HashMap<>();
for (String port : ports) {
List<PortBinding> hostPorts = new ArrayList<>();
hostPorts.add(PortBinding.of("0.0.0.0", port));
portBindings.put(port, hostPorts);
}
// 将容器端口443绑定到自动分配的可用主机端口:Bind container port 443 to an automatically allocated available host port.
List<PortBinding> randomPort = new ArrayList<>();
randomPort.add(PortBinding.randomPort("0.0.0.0"));
portBindings.put("443", randomPort);
final HostConfig hostConfig = HostConfig.builder().portBindings(portBindings).build();
// 创建具有暴露端口的容器:Create container with exposed ports
final ContainerConfig containerConfig = ContainerConfig.builder()
.hostConfig(hostConfig)
.image("busybox").exposedPorts(ports)
.cmd("sh", "-c", "while :; do sleep 1; done")
.build();
final ContainerCreation creation = docker.createContainer(containerConfig);
final String id = creation.id();
// 查健康度,获取容器的元数据:Inspect container
final ContainerInfo info = docker.inspectContainer(id);
// 开启容器:Start container
docker.startContainer(id);
//在运行的容器中执行attached和STDERR命令
// Exec command inside running container with attached STDOUT and STDERR
final String[] command = {"bash", "-c", "ls"};
final ExecCreation execCreation = docker.execCreate(
id, command, DockerClient.ExecCreateParam.attachStdout(),
DockerClient.ExecCreateParam.attachStderr());
final LogStream output = docker.execStart(execCreation.id());
final String execOutput = output.readFully();
// 杀掉一个运行中的容器。:Kill container
docker.killContainer(id);
// 删除一个容器:Remove container
docker.removeContainer(id);
// 关闭一个容器:Close the docker client
docker.close();
0 0
- docker-client 应用实例
- docker安装以及redis在docker中的应用实例
- 嗡汤圆的Docker自学笔记以及应用部署实例
- SFTP client 实例
- jsonrpc4j client使用实例
- HBase client API 实例
- HDFS client 实例
- SFTP client实例
- SFTP client 实例
- # NIO 实例demo-Client
- socket:server-client实例
- WebSphere MQ Java 应用开发简单实例(上篇)(client mode和binding mode)
- WebSphere MQ Java 应用开发简单实例(下篇)(client mode和binding mode)
- Smart Client技术应用
- Docker 中有 Client OS 吗
- Docker Client创建与命令执行
- Docker源码分析(二):Docker Client创建与命令执行
- Docker源码分析(二):Docker Client创建与命令执行
- Android内核开发:理解和掌握repo工具
- for(i=0,j=0;i<10,j<6;i++,j++)问题
- php curl返回false填坑记-curl调用微信创建自定义菜单返回false
- PHP实现数独破解(可以直接测试使用)
- search-guard插件的使用---logstash的配置
- docker-client 应用实例
- C/C++:__LINE__;__FILE__;__DATE__;__TIME__;__FUNCTION__等
- Android 编译 使用.SO 文件
- 搞清虚析构函数的使用场合
- (SQL)给指定库创建用户
- 【C基础】#if、if、#ifdef、#if defined之间的区别
- spring security 重复登陆了
- 判断一个APP页面是原生的还是H5页面
- 表单校验 点击登陆按钮的时候,触发验证