Docker 开放API使用(创建容器/启动容器/停止容器/删除容器)
Docker 开放API使用使用Docker开放API需要开启2375端口(Docker默认不开启)下面列举开启方式:在/usr/lib/systemd/system/docker.service,配置远程访问。主要是在[Service]这个部分,加上下面两个参数Copy# vim /usr/lib/systemd/system/docker.service[Service]Ex...
·
Docker 开放API使用
使用Docker开放API需要开启2375端口(Docker默认不开启)
下面列举开启方式:
在/usr/lib/systemd/system/docker.service,配置远程访问。
主要是在[Service]这个部分,加上下面两个参数
Copy# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
重启
Copysystemctl daemon-reload
systemctl restart docker
详情:https://www.cnblogs.com/hongdada/p/11512901.html
API使用:
1.依赖
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.1.1</version>
</dependency>
2.实现
package cn.zonhar.service;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
public interface DockerClientService {
/**
* 连接docker服务器
* @return
*/
public DockerClient connectDocker();
/**
* 创建容器
* @param client
* @return
*/
public CreateContainerResponse createContainers(DockerClient client,String containerName,String imageName,int internalPort,int externalPort );
/**
* 启动容器
* @param client
* @param containerId
*/
public void startContainer(DockerClient client,String containerId);
/**
* 停止容器
* @param client
* @param containerId
*/
public void stopContainer(DockerClient client,String containerId);
/**
* 删除容器
* @param client
* @param containerId
*/
public void removeContainer(DockerClient client,String containerId);
}
package cn.zonhar.service.impl;
import cn.zonhar.service.DockerClientService;
import com.alibaba.fastjson.JSONObject;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.Info;
import com.github.dockerjava.api.model.Ports;
import com.github.dockerjava.core.DockerClientBuilder;
import org.springframework.stereotype.Service;
import static com.github.dockerjava.api.model.HostConfig.newHostConfig;
@Service
public class DockerClientServiceImpl implements DockerClientService {
/**
* 连接docker服务器
* @return
*/
@Override
public DockerClient connectDocker(){
DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://ip:2375").build();
Info info = dockerClient.infoCmd().exec();
String infoStr = JSONObject.toJSONString(info);
System.out.println("docker的环境信息如下:=================");
System.out.println(info);
return dockerClient;
}
/**
* 创建容器
* @param client
* @return
*/
@Override
public CreateContainerResponse createContainers(DockerClient client, String containerName, String imageName, int internalPort, int externalPort ){
//映射端口 externalPort(物理机外部端口) -> internalPort(容器内部端口)
ExposedPort tcp80 = ExposedPort.tcp(internalPort);
Ports portBindings = new Ports();
portBindings.bind(tcp80, Ports.Binding.bindPort(externalPort));
CreateContainerResponse container = client.createContainerCmd(imageName)
.withName(containerName)
.withHostConfig(newHostConfig().withPortBindings(portBindings))
.withExposedPorts(tcp80).exec();
return container;
}
/**
* 启动容器
* @param client
* @param containerId
*/
@Override
public void startContainer(DockerClient client, String containerId){
client.startContainerCmd(containerId).exec();
}
/**
* 停止容器
* @param client
* @param containerId
*/
@Override
public void stopContainer(DockerClient client, String containerId){
client.stopContainerCmd(containerId).exec();
}
/**
* 删除容器
* @param client
* @param containerId
*/
@Override
public void removeContainer(DockerClient client, String containerId){
client.removeContainerCmd(containerId).exec();
}
}
3.为了方便运维人员管理容器,我们可以装个图形化界面(Portainer)
轻量级图形页面管理之Portainer
1.查看portainer镜像
[root@localhost ~]# docker search portainer
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n92esyLt-1580288615136)(C:\Users\zonhar\AppData\Roaming\Typora\typora-user-images\image-20200129164701984.png)]
2.选择喜欢的portainer风格镜像,下载
[root@localhost ~]# docker pull portainer/portainer
3.启动dockerui容器
[root@localhost ~]# docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
4.浏览器访问 http://ip:9000 , 设置一个密码即可,点击创建用户
更多推荐
所有评论(0)