一手掌握! -- 局域网内利用Portainer集中管理所有服务器上的Docker

2024-06-06 15:41:12 34点赞 335收藏 26评论

场景介绍

各位值友大家好,今天给大家带来新的干货。先介绍下使用场景,以便大家理解:

如果你家里部署了很多服务器,不管是物理机还是虚拟机,可能每台服务器上都部署了docker。而管理这些容器的时候,需要分别登录相应服务器。且前提是每台服务器都需要安装可视化容器管理应用。那么可否把这些docker容器集中在一起,方便查看管理呢? 答案是肯定的。

本文适用于广大折腾er,如果你家只有一台NAS装docker,那暂时用不到,但以后很可能用得到。如果你家不止一台NAS或者linux服务器,比如黑白群晖,比如NAS+软路由 等等,那么本文也许会帮到您。

先给大家看看效果:

通过远程集中管理多台服务器docker效果通过远程集中管理多台服务器docker效果

种种原因,我PVE,NAS部署了多套服务器。现在都集中到一起管理,一目了然,很是方便。

原理注意事项

原理是通过开通服务器2375端口,实现远程管理。因为没有认证机制,所以只要开通就可以连接。

所以请不要把暴露于公网上的服务器的2375端口放开。换言之,此方法只适用于局域网。

如何实现

前提:安装Portainer

你得安装了Docker(废话)。

首先在你的管理服务器上安装Portainer。

我这有个中文的Portainer,大家需要可以直接安装。自行修改端口就可以了。

docker run -d --restart=always --name="portainer" -p 9003:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /portainer:/data 6053537/portainer-ce

Step1. 安装好后,需要在远程连接目标服务器开通2375端口。开通方式:

1.群晖

SSH 链接后(root 权限)打开文件:

/var/packages/Docker/etc/dockerd.json

添加一行代码:

"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],

群晖添加一行代码群晖添加一行代码

保存重启 Docker 服务

2.Alpine

/etc/init.d/docker

修改这个文件中的: command_args 在参数后 增加: -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock, 完整的配置文件类似

#!/sbin/openrc-run

# Copyright 1999-2013 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

command="${DOCKERD_BINARY:-/usr/bin/dockerd}"

pidfile="${DOCKER_PIDFILE:-/run/${RC_SVCNAME}.pid}"

command_args="-p "${pidfile}" ${DOCKER_OPTS} -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"

DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME}.log}"

DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE}}"

DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE}}"

start_stop_daemon_args="--background

--stderr "${DOCKER_ERRFILE}" --stdout "${DOCKER_OUTFILE}""

extra_started_commands="reload"

rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited}"

retry="${DOCKER_RETRY:-TERM/60/KILL/10}"

depend() {

need sysfs cgroups

}

start_pre() {

checkpath -f -m 0644 -o root:docker "$DOCKER_LOGFILE"

}

reload() {

ebegin "Reloading ${RC_SVCNAME}"

start-stop-daemon --signal HUP --pidfile "${pidfile}"

eend $? "Failed to stop ${RC_SVCNAME}"

}

3.CentOS

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

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

在末尾加上-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

[root@localhost ~]# vim /usr/lib/systemd/system/docker.service

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

BindsTo=containerd.service

After=network-online.target firewalld.service containerd.service

Wants=network-online.target

Requires=docker.socket

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

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

ExecReload=/bin/kill -s HUP $MAINPID

TimeoutSec=0

RestartSec=2

Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.

# Both the old, and new location are accepted by systemd 229 and up, so using the old location

# to make them work for either version of systemd.

StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.

# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make

# this option work for either version of systemd.

StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.

# Only systemd 226 and above support this option.

TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

[Install]

4.Debian、Ubuntu等linux,基本道理相同

你修改的是/usr/lib/systemd/system/docker.service下的服务配置文件:

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

5.威联通

这个没搞定,后面单独说。


Step2.Portainer 里面添加环境

1.点击【添加环境】

1点击【添加环境】1点击【添加环境】

2.选择【独立的Docker】,开始向导

2选择【独立的Docker】2选择【独立的Docker】
  1. 选择【API】,输入名称, 目标服务器地址,端口2375,点击连接即可。

输入名称, 目标服务器地址,端口2375,点击连接即可。输入名称, 目标服务器地址,端口2375,点击连接即可。

单独说说威联通

作者不才,找到了威联通的docker配置文件,但修改并不起作用

威联通安装Docker后,配置文件位于/share/CACHEDEV1_DATA/.qpkg/container-station/etc/docker.json

问了威联通客服,也说不支持远程docker管理。

群晖客服反馈群晖客服反馈

如果哪位值友搞定了,也烦请赐教啊,感激不尽。

于是,我只能曲线救国,另辟蹊径了!就是在威联通里面装一个Portainer Agent。

(当然这个方法也适于其他linux服务器,但是都会多一个容器,和镜像,比较占空间和资源)

我们在威联通SSH直接输入以下内容

docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:2.19.4

威联通安装portainer agent威联通安装portainer agent

安装完毕后,威联通会多一个 portianer_agent 容器

安装完毕后,威联通会多一个 portianer_agent 容器安装完毕后,威联通会多一个 portianer_agent 容器

我们回到Portainer 管理端,准备连接威联通。

步骤和之前差不多,这次选【Agent】,输入威联通ip:9001 连接即可

这次选【Agent】,输入威联通ip:9001 连接即可这次选【Agent】,输入威联通ip:9001 连接即可

到此,完活!效果如下图:

效果如图效果如图

随便点一个进去,就能看到该服务器上的所有容器了

随便点一个进去,就能看到该服务器上的所有容器了随便点一个进去,就能看到该服务器上的所有容器了

点击【首页】可以切换到其他服务器。

总结下

如果你家的数码环境类似,有多个docker服务器,那么可以借鉴这个方法来统一管理所有docker,比较方便直接。

感谢各位看官耐心阅读到此。我是以浪得虚名,浪是浪的难受的[浪]。 喜欢数码、喜欢研究、喜欢讲原理、喜欢分享。

从来不索要点赞收藏打赏,我也是其他作者的阅读者,我会因为喜欢才会赞,觉得对自己有用才会收藏,心情激动才会打赏,哈哈哈哈。

能力一般水平有限,任何问题,错误,疏漏,欢迎大家指教。评论区见!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2249元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1699元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

2899元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1579元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

999元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7203.75元起

QNAP 威联通 TS-564 五盘位NAS (N5095、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5095、8GB)

1750元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1499元起

威联通(QNAP)TS-664 6盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS私有云(TS-653D升级版)

威联通(QNAP)TS-664 6盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS私有云(TS-653D升级版)

5450元起

QNAP 威联通 TS-932PX 9盘位NAS(AL324、4GB)

QNAP 威联通 TS-932PX 9盘位NAS(AL324、4GB)

4717.6元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1189元起

QNAP 威联通 TS-832PX 8盘位NAS(AL324、4GB)

QNAP 威联通 TS-832PX 8盘位NAS(AL324、4GB)

6280元起

威联通(QNAP)TS-464C 宇宙魔方 四核心处理器网络存储服务器内置双M.2插槽NAS(含企业盘16T*2)

威联通(QNAP)TS-464C 宇宙魔方 四核心处理器网络存储服务器内置双M.2插槽NAS(含企业盘16T*2)

暂无报价

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3159元起

QNAP TS-464C 8G内存四盘位家用SOHOintel四核心网络存储NAS TS-464CW(天鹅白款)

QNAP TS-464C 8G内存四盘位家用SOHOintel四核心网络存储NAS TS-464CW(天鹅白款)

1899元起
26评论

  • 精彩
  • 最新
  • 威联通用里面给的证书链接就可以了,理论任何docker都可以通过这样连接。只是有个有效期,得续期。

    校验提示文案

    提交
    那还是agent吧,省心

    校验提示文案

    提交
    我就是这样,用的群晖的证书

    校验提示文案

    提交
    收起所有回复
  • 何止局域网,我阿里云,谷歌云,甲骨文云以及其它的几个服务器上也一样可以通过局域网内部的portainer一起来统一管理

    校验提示文案

    提交
    请问广域网也是2375吗?

    校验提示文案

    提交
    你公网非要头铁用2375做什么?就不能自己改改?又不是定死的

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 费了半天劲终于成功了,目前在小米路由器7000里安装了docker和portainer,管理着DSM7.2的docker。首先群晖dsm7.2路径在/var/packages/ContainerManager/etc/dockerd.json,其次我小米路由器里portainer容器网络用的bridge,无法访问局域网内其他设备,用端口转发也连接不上,于是拿lucky加了个web服务反向代理套了个ssl证书,就能连接上了 [得意]

    校验提示文案

    提交
  • 我被整麻了,威联通本地安装portainer后,提示无法接管local环境。然后安装portainer agent,一直提示“Cannot connect to the Docker daemon at unix:///var/run/docker.soc”。但是可以确认docker开始正常的,docker info查看状态都正常

    校验提示文案

    提交
  • 可以安装portainer agent 管理

    校验提示文案

    提交
    这个文中提到了

    校验提示文案

    提交
    收起所有回复
  • 请教大佬,openwrt里的docker该怎么设置?

    校验提示文案

    提交
    文中提到的几个路径找找看。找到docker配置文件改下就可以。我手上没有openwrt。知道的朋友补充下。

    校验提示文案

    提交
    收起所有回复
  • 最近无法访问docker 官网了 [喜极而泣]

    校验提示文案

    提交
    说国内镜像都噶了

    校验提示文案

    提交
    收起所有回复
  • 搜索相关内容结果到了这里,感谢分享!当前是QTS5.2.1 ,在 Container Station偏好设置-证书中已支持远程访问Docker。

    校验提示文案

    提交
    太感谢了

    校验提示文案

    提交
    收起所有回复
  • docker 有api 可以😌支持 tls ,所以只要有docker server 都能搞到一起管理

    校验提示文案

    提交
  • 用宝塔更舒服

    校验提示文案

    提交
  • 我也用的这个,还不错

    校验提示文案

    提交
  • 请教如何设置代理

    校验提示文案

    提交
  • 很专业,字都认识…

    校验提示文案

    提交
  • 想问一下,doocker能否使用主机B上的镜像在主机A上建立容器?那就不需要每台机器都下载一次了。另外就是,后悔看到晚了,折腾了大半天,还是后面看的官网指引才用的agent,试图用nas管理pc上的。暴露了tcp2375 一直连接失败。

    校验提示文案

    提交
  • 2376吧

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
335
扫一下,分享更方便,购买更轻松