docker-java连接虚拟机使用docker

发布时间 2023-09-22 14:12:03作者: 犹豫的象

1、前言
在学习鱼皮的Oj在线项目,在第六个视频需要把代码远程同步到虚拟机的docker上,但是鱼皮的虚拟机是ubuntu带有界面,我的虚拟机是centos不带界面。
所有我准备不把代码同步到虚拟机上,而是在本地修改,到时候打包上去,这里面临一个问题就是docker-java连接docker。
2、正式工作
2.1)准备java代码

public static void main(String[] args) throws InterruptedException {
DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("tcp://192.168.66.100:2375") // 指定Docker守护进程的地址
.build();
DockerClient dockerClient= DockerClientBuilder.getInstance(config).build();
String image = "nginx:latest";
PullImageCmd pullImageCmd = dockerClient.pullImageCmd(image);
PullImageResultCallback pullImageResultCallback = new PullImageResultCallback() {
@Override
public void onNext(PullResponseItem item) {
System.out.println("下载镜像: " + item.getStatus());
super.onNext(item);
}
};

    pullImageCmd
            .exec(pullImageResultCallback)
            .awaitCompletion();
    System.out.println("下载完成");
}

image

2.2)、修改/usr/lib/systemd/system文件,添加

添加远程Api启动命令
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

image

2.3)防火墙开放2375端口

添加docker端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
更新防火墙规则
firewall-cmd --reload
检查防火墙放行端口号
firewall-cmd --zone=public --list-ports

2.4)运行代码不报错表示成功
image