赞
踩
如果对于docker安装及基础命令有疑问的可以看这些
Docker概念、安装以及配置镜像加速器
Docker进程、镜像、容器相关命令
Docker应用部署(Nginx部署)
在/usr/lib/systemd/system/docker.service。文件中添加配置远程访问
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
注意:原来的execStart 要注释掉
在pom.xml中添加docker-java 依赖
<dependency>
<groupId>com.github.docker-java</groupId>
<artifactId>docker-java</artifactId>
<version>3.1.5</version>
</dependency>
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.HostConfig; import com.github.dockerjava.api.model.Ports; import com.github.dockerjava.core.DockerClientBuilder; import static com.github.dockerjava.api.model.HostConfig.newHostConfig; public class DockerClientUtils { /** * 连接Docker服务器 * * @return */ public DockerClient connectDocker(String dockerInstance) { DockerClient dockerClient = DockerClientBuilder.getInstance(dockerInstance).build(); dockerClient.infoCmd().exec(); return dockerClient; } /** * 创建并启动容器 * * @param client * @param containerName 容易名称 * @param imageName 镜像名称 * @param withoutPort 外部端口 * @param interiorPort 映射的内部端口 * @return */ public CreateContainerResponse createContainers(DockerClient client, String containerName, String imageName, int withoutPort, int interiorPort) { //映射端口withoutPort—>interiorPort ExposedPort tcp80 = ExposedPort.tcp(interiorPort); Ports portBindings = new Ports(); portBindings.bind(tcp80, Ports.Binding.bindPort(withoutPort)); CreateContainerResponse container = client.createContainerCmd(imageName) .withName(containerName) .withHostConfig(newHostConfig().withPortBindings(portBindings)) .withExposedPorts(tcp80).exec(); return container; // CreateContainerResponse container = client.createContainerCmd(imageName) // .withName(containerName) // .withHostConfig(new HostConfig(). // withPortBindings(new Ports(new ExposedPort(8080), // Ports.Binding.bindPort(8080)))) //环境变量 // .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(); } }
public static void main(String[] args) { DockerClientUtils dockerClientUtils = new DockerClientUtils(); //连接Docker服务器 DockerClient client = dockerClientUtils.connectDocker("tcp://192.168.10.41:2375"); //创建容器 //CreateContainerResponse container = dockerClientUtils.createContainers(client,"container1","vulhub/appweb:7.0.1",8080,8080); CreateContainerResponse container = dockerClientUtils.createContainers(client, "container1", "tomcat", 8080, 8080); //启动容器 //System.out.println(container.getId()); dockerClientUtils.startContainer(client, container.getId()); System.out.println("================="); System.out.println(container.getId()); //关闭及停止容器 /* dockerClientUtils.stopContainer(client,"27ebd4faeeaffcd4930eb4062fa2ade5dae9382161170dbe3825b83c7217954b"); dockerClientUtils.removeContainer(client,"27ebd4faeeaffcd4930eb4062fa2ade5dae9382161170dbe3825b83c7217954b");*/ }
也可以正常关闭
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。