Docker开启远程安全访问的流程步骤

 更新时间:2023年12月21日 11:40:04   作者:niceyoo  
这篇文章主要介绍如何开启docker的远程访问并通过idea进行远程操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作有一定的帮助,需要的朋友们下面随着小编来一起学习吧

1、编辑docker.service文件

vi /usr/lib/systemd/system/docker.service

找到 [Service] 节点,修改 ExecStart 属性,增加 -H tcp://0.0.0.0:2375

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

 这样相当于对外开放的是 2375 端口,当然也可以根据自己情况修改成其他的。

2、重新加载Docker配置生效

systemctl daemon-reload 
systemctl restart docker 

通过浏览器访问 2375 测试一下,格式为:http://ip:2375/version

如果无法访问的话,可以尝试一下开放防火墙2375端口,具体命令如下:

firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload

如果还是不能访问,如果使用的机器是云服务器,比如阿里云、腾讯云等等,需要到服务器安全组规则中看看是否开放2375端口,如未配置,增加该端口配置即可。

这样我们就可以直接在Idea中的Docker插件中直接连接测试了:

3、配置Docker安全访问 

如上两步切勿用于生产环境!在开发环境用用就行了,如果直接把Docker这样对外暴露是非常危险的,就跟你Redis对外开放6379还不设置密码一样。

基本网上好多文章都是如上两步,裸奔的步骤... 你品,你细品,不给你挂马给谁挂。

其实官方文档已经提供基于CA证书的加密方法了,详情点击此处链接

3.1、创建CA私钥和CA公钥

首先创建一个ca文件夹用来存放私钥跟公钥

mkdir -p /usr/local/ca
cd /usr/local/ca

 然后在Docker守护程序的主机上,生成CA私钥和公钥:

openssl genrsa -aes256 -out ca-key.pem 4096

 执行完如上指令后,会要求我们输入密码才能进行下一步。

3.2、补全CA证书信息 

执行如下指令:

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

然后依次输入:访问密码、国家、省、市、组织名称、单位名称、随便一个名字、邮箱等。为了省事,组织、单位之类的。 

至此,CA证书就创建完成了,有了CA之后,就可以创建服务器密钥和证书签名请求(CSR)了,确保“通用名称”与你连接Docker时使用的主机名相匹配。

3.3、生成server-key.pem 

openssl genrsa -out server-key.pem 4096

3.4、用CA签署公钥 

由于可以通过IP地址和DNS名称建立TLS连接,因此在创建证书时需要指定IP地址。例如,允许使用10.211.55.4进行连接:

openssl req -subj "/CN=10.211.55.4" -sha256 -new -key server-key.pem -out server.csr

如果你是用的网址(比如:www.sscai.club)则替换一下即可:

openssl req -subj "/CN=www.sscai.club" -sha256 -new -key server-key.pem -out server.csr

 注意:这里指的ip或者是域名,都是指的将来用于对外的地址。

3.5、匹配白名单

配置白名单的意义在于,允许哪些ip可以远程连接docker。

配置0.0.0.0,允许所有的ip可以链接(但只允许永久证书的才可以连接成功)

echo subjectAltName = DNS:www.yumeng.com,IP:0.0.0.0 >> extfile.cnf

3.6、执行命令

将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证:

echo extendedKeyUsage = serverAuth >> extfile.cnf

3.7、生成签名整数 

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf

执行后需要输入上方设置的密码。 

3.8、生成客户端的key.pem 

openssl genrsa -out key.pem 4096
 
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

3.9、要使秘钥适合客户端身份验证 

创建扩展配置文件:

echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf

3.10、生成签名整数 

echo extendedKeyUsage = clientAuth >> extfile.cnf
echo extendedKeyUsage = clientAuth > extfile-client.cnf

生成cert.pem,需要再次输入之前设置的密码。

3.11、删除不需要的文件,两个整数签名请求 

 生成后cert.pemserver-cert.pem您可以安全地删除两个证书签名请求和扩展配置文件:

rm -v client.csr server.csr extfile.cnf extfile-client.cnf

3.12、可修改权限 

为了保护您的密钥免于意外损坏,请删除其写入权限。要使它们仅供您阅读,请按以下方式更改文件模式:

chmod -v 0400 ca-key.pem key.pem server-key.pem

证书可以使对外可读的,删除写入权限以防止意外损坏:

chmod -v 0444 ca.pem server-cert.pem cert.pem

3.13、归集服务器证书

cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/

3.14、修改Docker配置

使Docker守护程序仅接收来自提供CA信任的证书的客户端的链接

vim /lib/systemd/system/docker.service

将 ExecStart 属性值进行替换:

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/usr/local/ca/ca.pem --tlscert=/usr/local/ca/server-cert.pem --tlskey=/usr/local/ca/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

3.15、重新加载daemon并重启docker

systemctl daemon-reload
 
systemctl restart docker

我们去IDEA中的docker模块验证一下,先看一下之前的连接:

显然是无法连接了,此时我们需要去拿到docker宿主机创建的证书,使用证书才可以进行连接:

拉取这四个证书文件至本地文件夹,这个文件夹将用于在idea指定,需要说的是,TCP 里的链接需要改成 Https 格式,具体内容如下图所示:

以上就是Docker开启远程安全访问的流程步骤的详细内容,更多关于Docker开启远程安全访问的资料请关注脚本之家其它相关文章!

相关文章

  • Docker使用root用户进入容器的几种方法小结

    Docker使用root用户进入容器的几种方法小结

    很多时候,拉取运行的容器,进入时,是非root账户,也不知道当前账户的用户密码,甚至无账户,但在使用docker时,有时候需要以root用户权限进入容器进行操作,所以本文介绍了Docker使用root用户进入容器的几种方法,需要的朋友可以参考下
    2025-09-09
  • 解决Ubuntu中Docker安装时“无法找到软件包”错误的解决方案

    解决Ubuntu中Docker安装时“无法找到软件包”错误的解决方案

    在Ubuntu中安装Docker时遇到“无法找到软件包”错误,通常是由于软件源未正确配置或更新、软件包名称错误或已更改等原因造成的,解决方法包括添加Docker官方软件源、更新软件包列表、重新安装Docker等
    2026-01-01
  • 详解Docker commit的使用

    详解Docker commit的使用

    这篇文章主要介绍了Docker commit使用的相关资料,帮助大家更好的理解和使用docker容器,感兴趣的朋友可以了解下
    2020-09-09
  • Docker容器内更新apt-get国内加速实现过程

    Docker容器内更新apt-get国内加速实现过程

    文章讲述了使用国内镜像加速Docker容器内apt-get的方法,通过修改配置文件指向国外镜像源,解决了网速慢的问题
    2026-03-03
  • 局域网内部署 Docker Registry(推荐)

    局域网内部署 Docker Registry(推荐)

    本文将从创建单机的 Docker Registry 开始,逐步完成局域网内可用的 Docker Registry 的创建,并重点解释如何使用 IP 地址访问 Registry 的方法
    2017-05-05
  • 对Docker-java项目进行jvm调优-内存方式

    对Docker-java项目进行jvm调优-内存方式

    本文详细介绍了如何进入Docker容器并分析Java进程的内存使用情况,通过使用jps和jstat工具,可以查看java进程列表及内存池容量,讨论了设置JVM参数-Xmx和-Xms相等的重要性,以避免堆内存的频繁调整,此外,还探讨了FullGC触发条件和元空间的配置
    2024-09-09
  • Docker设置代理的方法教程

    Docker设置代理的方法教程

    本篇文章主要介绍了Docker设置代理的方法教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Jenkins Pipeline中Docker镜像构建与推送的常见问题及解决方案

    Jenkins Pipeline中Docker镜像构建与推送的常见问题及解决方案

    在现代 DevOps 实践中,Jenkins 作为一款流行的持续集成和持续交付(CI/CD)工具,被广泛应用于自动化构建、测试和部署流程,然而,在实际使用 Jenkins Pipeline 进行 Docker 镜像构建和推送的过程中,可能会遇到各种问题,本文将通过一个具体的案例给大家详细的介绍一下
    2025-01-01
  • Docker快速部署SpringBoot项目介绍

    Docker快速部署SpringBoot项目介绍

    大家好,本篇文章主要讲的是Docker快速部署SpringBoot项目介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦,方便下次浏览
    2021-12-12
  • Docker安装node-red、导入节点、部署查看的步骤详解

    Docker安装node-red、导入节点、部署查看的步骤详解

    Node-RED设计使用的场景是IoT,但是作为一个流编排引擎,显然它能做的事情更多,比如使用容器化的方式进行构建、打包、部署等操作也是可行的,这篇文章继续介绍Docker安装node-red、导入节点、部署查看的相关知识,感兴趣的朋友一起看看吧
    2022-01-01

最新评论