Docker开启Docker API方式
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">方式一:修改docker配置文件</a></li><li><a href="#_label1">方式二:修改docker服务配置</a></li><li><a href="#_label2">异常解决方案</a></li><li><a href="#_label3">解决方案</a></li><li><a href="#_label4">验证API是否开启</a></li><li><a href="#_label5">总结</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>方式一:修改docker配置文件</h2><p>1.使用vi或vim打开docker的配置文件<code>/etc/docker/daemon.json</code></p>
<div class="jb51code"><pre class="brush:bash;">vim /etc/docker/daemon.json
</pre></div>
<p>2.打开写入如下内容后保存退出:</p>
<div class="jb51code"><pre class="brush:bash;">[
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
]
</pre></div>
<p>hosts:为指定监听的ip地址与端口。</p>
<p>使用 <code>0.0.0.0</code> 监听所有网络接口可能存在安全风险,因为这会使 Docker API 可以被公开访问。</p>
<p>建议在生产环境中仅允许受信任的 IP 地址访问 Docker API,并使用安全连接(如 TLS)进行通信。</p>
<p>3.重启docker服务</p>
<div class="jb51code"><pre class="brush:bash;">sudo systemctl restart docker
</pre></div>
<p>如果重启没报错,<strong>恭喜你!<strong>你已经</strong>成功开启了Docker API</strong>,移步至验证API是否正常请求。</p>
<p>如果<strong>报错了</strong>,请移步至下面提供的解决方案。</p>
<p class="maodian"><a name="_label1"></a></p><h2>方式二:修改docker服务配置</h2>
<p>1.使用vi或vim进入docker.server <code>/lib/systemd/sytem/docker.service</code></p>
<div class="jb51code"><pre class="brush:bash;">vim /lib/systemd/sytem/docker.service
</pre></div>
<p>2.找到 <strong>ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock</strong>这一行</p>
<p style="text-align:center"><br /><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025120510262950.png" /></p>
<p>3.在这一行后面添加 <code>-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock</code></p>
<div class="jb51code"><pre class="brush:bash;">ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
</pre></div>
<p>4.重启docker服务</p>
<div class="jb51code"><pre class="brush:bash;">systemctl daemon-reload
sudo systemctl restart docker
</pre></div>
<p>如果重启没报错,<strong>恭喜你!<strong>你已经</strong>成功开启了Docker API</strong>,移步至验证API是否正常请求。</p>
<p>如果<strong>报错了</strong>,请看解决方案<strong>↓</strong>。</p>
<p class="maodian"><a name="_label2"></a></p><h2>异常解决方案</h2>
<p>我两种方式都试了,全部无效,设置完配置文件后就报错(报错信息如下):</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025120510262946.png" /></p>
<p>具体原因是因为在方式一中的 <code>/etc/docker/daemon.json</code>文件写入的配置与方式二种的<code>ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock</code>这行命令有冲突。应该是都有hosts相关配置。</p>
<p class="maodian"><a name="_label3"></a></p><h2>解决方案</h2>
<p>1.修改<code>/lib/systemd/sytem/docker.service</code>文件,去掉 <strong>-H fd://</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025120510262958.png" /></p>
<p>2.将fd://添加到daemon.json配置中</p>
<div class="jb51code"><pre class="brush:bash;">[
"hosts": ["fd://","tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
]
</pre></div>
<p>3.重启docker</p>
<div class="jb51code"><pre class="brush:bash;">systemctl daemon-reload
sudo systemctl restart docker
</pre></div>
<p>重启成功!</p>
<p class="maodian"><a name="_label4"></a></p><h2>验证API是否开启</h2>
<p>1.在本机使用curl命令查看版本信息</p>
<div class="jb51code"><pre class="brush:bash;">curl http://localhost:2375/version
</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025120510262960.png" /></p>
<p>2.如果局域网其他机器获取使用postman接口请求工具内无法访问,需要关闭防火墙或将服务器的2375端口放行。</p>
<ul><li>对于 iptables:</li></ul>
<div class="jb51code"><pre class="brush:bash;">sudo systemctl stop iptables
</pre></div>
<ul><li>对于 firewalld:</li></ul>
<div class="jb51code"><pre class="brush:bash;">sudo systemctl stop firewalld
</pre></div>
<p>关闭防火墙后,请尝试再次使用 curl 连接到 Docker API,看看问题是否解决。如果问题仍然存在,请重新启动防火墙以保护您的系统。</p>
<p class="maodian"><a name="_label5"></a></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
頁:
[1]