Docker配置远程连接

前言

默认 Docker 是通过非网络的 Unix 套接字运行的,只能够进行本地通信(/var/run/docker.sock),是不能够直接远程连接 Docker 的。

开始配置

编辑 /etc/docker/daemon.json 文件

复制代码
{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

重启 Docker 服务

复制代码
sudo systemctl restart docker

检测 Docker 服务

复制代码
systemctl status docker

解决问题

复制代码
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [fd://], from file: [unix:///>

Docker 守护进程的配置冲突:hosts 参数在 /etc/docker/daemon.json 文件中和 systemd 服务的启动参数(flag)中同时被定义,导致 Docker 无法启动。具体的冲突是:

  • daemon.json 配置了 hosts: ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
  • systemd 服务启动参数(flag)中指定了 hosts: [fd://]

Docker 不允许 hosts 参数在两个地方同时定义,因此启动失败。

检查 systemd 配置文件

Dockersystemd 配置文件可能通过 ExecStart 参数设置了默认的 fd://(文件描述符通信方式)。查看当前配置:

复制代码
systemctl cat docker

or

cat /lib/systemd/system/docker.service

查找 ExecStart 行,通常类似:

复制代码
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

-H fd:// 是默认的 hosts 配置,与 daemon.json 中的配置冲突。

移除 systemd 中的 -H fd://

编辑 systemdDocker 服务配置文件,避免重复定义 hosts

创建或编辑覆盖文件

复制代码
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/override.conf

添加以下内容,移除 -H fd://

复制代码
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

注意:ExecStart= 先清空原有配置,然后重新定义。

保存并重新加载 systemd 配置,重启 Docker 并检查状态:

复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker
相关推荐
程序员一点1 分钟前
第4章:Linux 文件系统结构与路径管理
linux·运维·服务器
百***787511 分钟前
Clawdbot 技术实战:基于一步 API 快速接入,打造本地化 AI 自动化助手
运维·人工智能·自动化
EnglishJun12 分钟前
数据结构的学习(二)---Makefile的使用
linux·运维·学习
jl486382121 分钟前
打造医疗设备的“可靠视窗”:医用控温仪专用屏从抗菌设计到EMC兼容的全链路解析
大数据·运维·人工智能·物联网·人机交互
曾几何时`21 分钟前
Docker容器化部署编译运行模块
运维·docker·容器
HalvmånEver25 分钟前
Linux:线程 ID 与地址空间布局:深入理解线程内存分布(线程七)
linux·运维·服务器·操作系统·线程
北京阿法龙科技有限公司30 分钟前
工业场景下AR+AI图像识别:精准选型赋能运维与质检
运维·人工智能·ar
小oo呆1 小时前
【学习心得】CMD终端设置Proxy的几个要点
运维·服务器·网络
Forget_85501 小时前
RHEL——制作母盘
linux·运维·服务器
释怀不想释怀1 小时前
Linux命令--echo~反引号符~重定向符(>>)~tail命令
linux·运维·服务器