群晖 docker 启动脚本位置 /var/packages/Docker/scripts/start-stop-status
,你可以修改这个脚本,在 docker 服务启动、停止对应的位置添加自己需要特定触发的命令。
例如:需要在 docker 启动后执行 ip link
将自定义创建的 docker macvlan 网络驱动与物理网卡 ovs_system 连接(这句话只是描述的一个场景,实际上当你在群晖上有 docker macvlan 连接到物理网卡的需求时候,也可以通过可视化界面上配置开机触发的命令来实现)。
下面是一个在该脚本中加载群晖缺失的的透明代理模块的脚本示例:
#(省略前面内容)
# install modules
iptablestool --insmod "${DockerServName}" ${InsertModules}
$DockerUpdaterBin postinst updatedockerdconf "$(get_install_volume_type)"
# 以下 insmod 清单是添加的加载内核模块的命令
insmod /lib/modules/nfnetlink.ko &> /dev/null
insmod /lib/modules/ip_set.ko &> /dev/null
insmod /lib/modules/ip_set_hash_ip.ko &> /dev/null
insmod /lib/modules/xt_set.ko &> /dev/null
insmod /lib/modules/ip_set_hash_net.ko &> /dev/null
insmod /lib/modules/xt_mark.ko &> /dev/null
insmod /lib/modules/xt_connmark.ko &> /dev/null
insmod /lib/modules/xt_comment.ko &> /dev/null
insmod /lib/modules/xt_TPROXY.ko &> /dev/null
insmod /lib/modules/xt_socket.ko &> /dev/null
insmod /lib/modules/iptable_mangle.ko &> /dev/null
insmod /lib/modules/textsearch.ko &> /dev/null
insmod /lib/modules/ts_bm.ko &> /dev/null
insmod /lib/modules/xt_string.ko &> /dev/null
insmod /lib/modules/nf_nat_ipv6.ko &> /dev/null
insmod /lib/modules/nf_nat_masquerade_ipv6.ko &> /dev/null
insmod /lib/modules/ip6t_MASQUERADE.ko &> /dev/null
insmod /lib/modules/ip6table_nat.ko &> /dev/null
insmod /lib/modules/ip6table_raw.ko &> /dev/null
insmod /lib/modules/ip6table_mangle.ko &> /dev/null
# start docker
if ! start_docker_daemon; then
exit 1
fi
#(省略后面内容)
(END)