Java连接docker

Java连接docker

环境

centos7

简单连接

要想访问dockerAPI需要先设置一个端口:

vi /lib/systemd/system/docker.service

找到Execstart=/usr/bin/dockerd后加上 -H tcp://0.0.0.0:4399 -H unix://var/run/docker/sock,保存退出。

重新载入守护进程,重启docker:

systemctl daemon-reload
service docker restart
systemctl status docker		//查看相关内容,看4399端口是否已经设置好
netstat -nlp | grep 4399	//查看4399是否被监听

如果是阿里的云服务器,应该需要在安全组中加入4399或其他的操作。

如果是本地虚拟机,则需要把防火墙关闭或在防火墙中开启相应端口供外部使用:

关闭防火墙:

启动:		systemctl start firewalld
关闭:		systemctl stop firewalld
查看状态:	systemctl status firewalld
开机启用:	systemctl enable firewalld
开机禁用:	systemctl disable firewalld

开启端口:

添加端口:	firewall-cmd --zone=public --add-port=4399/tcp --permanent		(permanent为永久生效,没有这个参数则firewall重启失效)
重新载入:	firewall-cmd --reload
查询端口:	firewall-cmd --zone=public --query-port=4399/tcp
删除端口:	firewall-cmd --zone=public --remove-port-4399/tcp --permanent

这时就可以通过URL访问docker了。

在浏览器中输入http://xxx.xxx.xxx.xxx:4399/info,返回 json。

更多操作:https://docs.docker.com/engine/api/v1.29/#operation/ContainerAttach

在Java中访问:

在docker官方文档中有介绍:(最后有一些不是官方的)https://docs.docker.com/develop/sdk/#unofficial-libraries

可选择不同语言,如docker-java。

在docker-java的GitHub上官方推荐的连接方式:https://github.com/docker-java/docker-java

docker-java推荐使用maven项目引入相关的jar包依赖:

<dependency>
      <groupId>com.github.docker-java</groupId>
      <artifactId>docker-java</artifactId>
      <!-- use latest version https://github.com/docker-java/docker-java/releases -->
      <version>3.X.Y</version>
</dependency>

使用:

DockerClient dockerClient = DockerClientBuilder.getInstance("tcp://xxx.xxx.xxx.xxx:2375").build();
Info info = dockerClient.infoCmd().exec();
System.out.println(info);

这种最简单的连接方式是有漏洞的,存在暴露端口的危害。

其他操作:

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
 
配置firewalld-cmd
 
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

安全连接

如何在服务器上或者本地虚拟机上生成密钥文件可参考官方文档:https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl

https://docs.docker.com/engine/security/https/

— 官方生成不了??? —

首先选择一个存放密钥文件的地方 我这里选择/home/user/certs来存放 /user/certs是我自己创建的 进到certs文件中运行openssl genrsa -aes256 -out ca-key.pem 4096

[root@ywh certs]# openssl genrsa -aes256 -out ca-key.pem 4096
Generating RSA private key, 4096 bit long modulus
.........................++
....................................
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值