抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

docker提供rest api服务,开启后可以使用第三方管理工具进行Docker管理。一般情况下,会使用2375端口号。

前置条件

具备Docker实验环境。

本次使用的实验环境如下:

系统 版本信息
Linux Ubuntu Server 22.04
Unraid 6.11.5
群晖 7.2.1

Linux开启Docker远程API

修改配置文件

打开docker的systemd服务注册文件

1
sudo nano /lib/systemd/system/docker.service

查看13行左右的execStart,是否有类似“-H tcp://0.0.0.0:2375”的参数:

1
2
3
4
#### 找到[Service]下面的(修改前)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#### 改为如下(修改后)
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock

重启服务

1
2
sudo systemctl daemon-reload          # 重新加载守护进程配置
sudo systemctl restart docker.service # 重启 docker 服务

Shell脚本自动化

每次使用包管理器升级docker后,配置都会重置,需要重新添加。这里提供一个Shell脚本用于定时作业自动化执行,减少繁琐的手动配置。

Shell脚本内容如下:

1
2
3
4
5
6
7
8
9
10
if test -z "$(cat /usr/lib/systemd/system/docker.service | grep 2375)"; #判断是否不存在关键字2375
then
echo "不存在关键字2375,执行自动添加。"
sudo sed -i 's#ExecStart=.*#ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock#' /usr/lib/systemd/system/docker.service
sudo systemctl daemon-reload # 重新加载守护进程配置
sudo systemctl restart docker.service # 重启 docker 服务
echo "不存在关键字2375,自动添加、重启服务完成。"
else
echo "存在关键字2375,结束。"
fi

这里使用1Panel的计划任务功能实现定时作业,如下图:OS_UPDATE为每月执行一次的更新系统,ENABLE_DOCKER_API放在其之后执行,以便能达到docker升级后自动化开启远程API的效果。

Snipaste_2024-04-27_15-32-02

Unraid开启Docker远程API

修改配置文件

打开配置文件

1
vi /boot/config/docker.cfg

最下方添加

1
DOCKER_OPTS="--storage-driver=btrfs -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375"

重启服务

1
/etc/rc.d/rc.docker restart

群晖DSM开启Docker远程API

修改配置文件

DSM 7.2以后,Docker更名为Container Manager,所以配置文件路径不一样

1
2
3
4
###docker改名前
sudo vi /var/packages/Docker/etc/dockerd.json
###docker改名Container Manager后
sudo vi /var/packages/ContainerManager/etc/dockerd.json

重启服务

完成后到套件中心停用-启用docker套件。

参考

评论