小知识:Docker开启远程访问的实现方式

Docker守护进程套接字

Docker守护进程可以通过三种不同类型的套接字监听Docker Engine API请求:unix、tcp和fd。

默认情况下,在/var/run/docker.sock处创建一个unix域套接字(或IPC套接字),需要root权限或docker组成员身份。

如果需要远程访问Docker守护进程,则需要启用tcp套接字。请注意,默认设置提供了对Docker守护进程的未加密和未经身份验证的直接访问,应该使用内置的HTTPS加密套接字或在其前面放置一个安全的web代理来进行保护。你可以使用-H tcp://0.0.0.0:2375监听所有网络接口上的2375端口,或使用其IP地址-H tcp://ip:2375监听特定网络接口上的2375端口。通常使用端口2375与守护进程进行非加密通信,使用端口2376与守护进程进行加密通信。

注意:如果你使用的是HTTPS加密的套接字,请记住,仅支持TLS1.0及更高版本。出于安全原因,SSLv3及以下版本的协议不再受支持。

修改docker.service

?
1
vim /usr/lib/systemd/system/docker.service

在[Service]部分,修改ExecStart参数,在最后增加-H tcp://0.0.0.0:2375,监听所有网络接口上的2375端口。

?
1
ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

%小知识:Docker开启远程访问的实现方式-猿站网-插图

重新加载配置文件和启动服务

?
1
systemctl daemon-reload && systemctl restart docker
daemon-reload: 重新加载服务的配置文件,要是服务的配置文件发生变化,则需要重新加载 restart:重新启动服务。

查看dockerd进程是否正在监听2375端口:

?
1
2
[root@izoq008ryseuupz ~]# netstat -antp | grep dockerd
tcp6    0   0 :::2375         :::*          LISTEN   22494/dockerd   

netstat命令用于显示网络状态,部分选项的作用如下:

-a或–all:显示所有连线中的Socket。 -n或–numeric:直接使用IP地址,而不通过域名服务器。 -t或–tcp:显示TCP传输协议的连线状况。 -p或–programs:显示正在使用Socket的程序识别码和程序名称。

测试

接下来测试一下通过localhost是否能使用Docker Engine API。

?
1
2
[root@izoq008ryseuupz ~]# curl http://localhost:2375/version
{“Platform”:{“Name”:”Docker Engine – Community”},”Components”:[{“Name”:”Engine”,”Version”:”19.03.13″,”Details”:{“ApiVersion”:”1.40″,”Arch”:”amd64″,”BuildTime”:”2020-09-16T17:02:21.000000000+00:00″,”Experimental”:”false”,”GitCommit”:”4484c46d9d”,”GoVersion”:”go1.13.15″,”KernelVersion”:”3.10.0-514.26.2.el7.x86_64″,”MinAPIVersion”:”1.12″,”Os”:”linux”}},{“Name”:”containerd”,”Version”:”1.3.7″,”Details”:{“GitCommit”:”8fba4e9a7d01810a393d5d25a3621dc101981175″}},{“Name”:”runc”,”Version”:”1.0.0-rc10″,”Details”:{“GitCommit”:”dc9208a3303feef5b3839f4323d9beb36df0a9dd”}},{“Name”:”docker-init”,”Version”:”0.18.0″,”Details”:{“GitCommit”:”fec3683″}}],”Version”:”19.03.13″,”ApiVersion”:”1.40″,”MinAPIVersion”:”1.12″,”GitCommit”:”4484c46d9d”,”GoVersion”:”go1.13.15″,”Os”:”linux”,”Arch”:”amd64″,”KernelVersion”:”3.10.0-514.26.2.el7.x86_64″,”BuildTime”:”2020-09-16T17:02:21.000000000+00:00″}

curl是常用的命令行工具,用来请求Web服务器。不带任何参数时,curl发出GET请求。

很显然可以通过localhost使用Docker Engine API。

再来测试一下远程通过主机IP能否使用Docker Engine API,请求http://ip:2375/version得到的页面如下图所示,很显然是可以的。

%小知识:Docker开启远程访问的实现方式-1猿站网-插图

IDEA也是可以进行远程连接的。

%小知识:Docker开启远程访问的实现方式-2猿站网-插图

可能的问题

如果远程访问不了,可能需要设置一下服务器的防火墙,应该是2375端口没有暴露出去,所以远程访问不了,博主是阿里云的服务器(Centos7.3)。

%小知识:Docker开启远程访问的实现方式-3猿站网-插图

到此这篇关于Docker开启远程访问的实现方式的文章就介绍到这了,更多相关Docker 远程访问内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_37960603/article/details/111431817

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:使用docker部署dubbo项目的方法步骤

2023-3-24 17:09:02

建站知识

小知识:Linux Docker运行springboot项目的步骤详解

2023-3-24 17:20:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索