当前位置: 首页 > article >正文

Docker 远程访问完整配置教程以及核心参数理解

Docker 远程访问完整配置教程

以下是配置 Docker 支持远程访问的完整教程,包括参数说明、配置修改、云服务器安全组设置、主机防火墙配置,以及验证远程访问的详细步骤。


1. 理解 -H fd:// 参数的作用(理解了以后容易理解后面的操作)

-H 参数用于指定 Docker 守护进程的监听方式(监听“门口”)。可以配置 Docker 监听:

  • Unix 套接字:如 unix:///var/run/docker.sock(本地通信)。
  • TCP 地址:如 tcp://0.0.0.0:2375(远程访问)。
  • 文件描述符(fd://:让 Docker 通过 systemd 管理监听方式。
什么是 -H fd://
  • fd:// 表示 File Descriptor(文件描述符)。
  • Docker 不直接监听具体地址或端口,而是通过 systemd 提供的文件描述符监听。
  • systemd 通常默认让 Docker 使用本地 Unix 套接字 unix:///var/run/docker.sock
形象比喻
  • 没有 -H fd://
    Docker 自己决定监听哪些“门”,比如监听本地套接字或远程端口。你明确告诉它:

    “去盯住这扇门,比如 2375 端口!”

  • 使用 -H fd://
    Docker 把选择监听方式的任务交给 systemd。Docker 对 systemd 说:

    “systemd,你安排门,我负责听谁敲门!”


2. 修改 Docker 配置

2.1 修改 docker.service 文件
  1. 编辑 Docker 服务文件:

    bash
    
    
     
    sudo nano /usr/lib/systemd/system/docker.service
    
  2. 查找以下行:

    bash
    
    
     
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
  3. 修改为:

    bash
    
    
     
    ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
    

    这里移除了 -H fd:// 参数,让 Docker 不再依赖 systemd 的监听方式。

  4. 保存并退出。


2.2 配置 daemon.json 文件

通过 /etc/docker/daemon.json 配置 Docker 监听本地和远程连接。

  1. 编辑 daemon.json 文件:

    bash
    
    
     
    sudo nano /etc/docker/daemon.json
    
  2. 添加以下内容:(registry 是docker加速器,在国外可以不管这个)

    json
    
    
     
    {
      "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.unsee.tech"
      ],
      "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
    }
    
  3. 保存并退出。


2.3 重新加载并重启 Docker 服务
bash


 
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 配置云服务器安全组

对于云服务器(如阿里云、AWS、腾讯云),需要在安全组中开放 Docker 的远程访问端口(TCP 2375)。

  1. 登录云服务提供商管理控制台。
  2. 找到实例的 安全组 配置。
  3. 添加一条规则:
    • 协议:TCP
    • 端口范围:2375
    • 来源:根据需求设置(可选 0.0.0.0/0 或特定 IP 段)。
  4. 保存并应用规则。

4. 配置主机防火墙

如果服务器启用了防火墙(如 firewalld),需要显式开放 TCP 2375 端口。

4.1 检查防火墙状态
bash


 
sudo systemctl status firewalld

如果防火墙未启用,可跳过本节。

4.2 开放 2375 端口
bash


 
sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
4.3 重新加载防火墙
bash


 
sudo firewall-cmd --reload
4.4 验证防火墙规则
bash


 
sudo firewall-cmd --list-ports

确认 2375/tcp 端口已在列表中。


5. 验证远程访问

5.1 使用浏览器验证

在浏览器地址栏输入以下 URL:

http://<服务器IP>:2375/version

如果配置正确,会返回类似以下的 JSON 数据:
粘个图,嘿嘿
在这里插入图片描述

5.2 使用 Docker CLI 验证

在远程客户端执行以下命令:

bash


 
docker -H tcp://<服务器IP>:2375 info

如果配置正确,将返回 Docker 服务器的相关信息。


6. 安全性注意事项(没试过可选)

  1. 默认配置无加密或认证

    • Docker 的远程访问(TCP 2375)默认不启用加密或认证机制,存在安全隐患。
    • 开放 2375 后,任何访问到该端口的用户都能完全控制 Docker 守护进程。
  2. 推荐的安全措施

    • 使用 SSH 隧道:不直接开放 2375,而是通过 SSH 隧道访问 Docker:

      bash
      
      
       
      ssh -L 2375:localhost:2375 user@<服务器IP>
      

      然后本地访问:

      bash
      
      
       
      docker -H tcp://localhost:2375 info
      
    • 启用 TLS 加密: 为 Docker 配置 TLS,确保通信加密且客户端必须认证。具体配置可以参考 Docker 官方文档。

    • 限制来源 IP:通过安全组或防火墙仅允许可信 IP 访问 2375。


总结

通过本教程,完成 Docker 的远程访问配置,包括参数调整、安全组与防火墙配置,以及远程访问的验证。


http://www.kler.cn/a/469564.html

相关文章:

  • 服务器等保测评审计日志功能开启(auditd)和时间校准
  • 【C++面向对象——类的多态性与虚函数】编写教学游戏:认识动物(头歌实践教学平台习题)【合集】
  • 【unity调用c++动态库,c++和c#相互调用】
  • C++11——2:可变模板参数
  • 《探秘计算机视觉与深度学习:开启智能视觉新时代》
  • 服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复
  • 2024数据湖架构实践案例(附资料)
  • 青少年编程与数学 02-006 前端开发框架VUE 07课题、条件渲染
  • 动态规划在斐波那契数列中的应用与优化
  • 2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程
  • 银行大数据平台管理系统的设计与实现
  • 【Elasticsearch】节点与集群:架构原理与优化实践
  • ubuntu 22.04安装ollama
  • 修改openjdk17源码,手搓native方法调用java method方法(无参,无返回值)
  • 蓝耘:GPU算力云服务的技术探索与AIGC应用支持
  • 连接github和ai的桥梁:GitIngest
  • 后台管理系统动态面包屑Breadcrumb组件的实现
  • Python视频处理:噪声矩阵与并行计算的完美融合
  • Couchbase 和数据湖技术的区别、联系和相关性分析
  • Uniapp Android 本地离线打包(详细流程)
  • HCIA-Access V2.5_7_5_XG(S)- GPON网络演进为XG(S)-PON网络
  • Golang 入门基础知识
  • flink-connector-kafka 3.4源码编译
  • 贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评
  • 用公网服务代理到本地电脑笔记
  • Go语言的 的同步与异步编程(Synchronization Asynchronous Programming)核心知识