找回密码
 加入我们
搜索
      
查看: 6244|回复: 20

[NAS] 请教下如何在docker启动时让他自动执行指定的sh脚本

[复制链接]
发表于 2023-3-17 13:56 | 显示全部楼层 |阅读模式
小弟纯小白一枚,非IT行业。去年收了台二手TS451D,一直当纯存储和相册服务器用,昨天心血来潮想跑个docker开minecraft服务器,和几个朋友一起玩,一切准备妥当后当然也是顺利开服。
但是由于我设定了nas每天自动开关机,所以每次都要手动开服,手动关服,挺麻烦,也担心哪天忘记关服导致存档丢失。
现在想能不能让docker在启动的时候自动运行一个sh脚本来实现自动开服,然后再运行一个定时sh脚本实现定时关服。
QQ截图20230317130649.png
发表于 2023-3-17 14:10 | 显示全部楼层
本帖最后由 yugu91 于 2023-3-17 14:11 编辑

抱歉,看错信息
发表于 2023-3-17 14:48 | 显示全部楼层
是运行sh脚本启动关闭docker还是docker运行sh脚本,
前者就是docker run和docker stop,后者你可以修改一下Dockerfile
 楼主| 发表于 2023-3-17 14:52 | 显示全部楼层
monkeylab 发表于 2023-3-17 14:48
是运行sh脚本启动关闭docker还是docker运行sh脚本,
前者就是docker run和docker stop,后者你可以修改一下 ...

是docker运行sh脚本,请问dockerfile在什么位置要怎么打开,qnap自带的文件管理器无法找到
发表于 2023-3-17 15:03 来自手机 | 显示全部楼层
我折腾了半天也没搞定docker跑饥荒服务器
 楼主| 发表于 2023-3-17 18:36 | 显示全部楼层
我醉了你呢 发表于 2023-3-17 15:03
我折腾了半天也没搞定docker跑饥荒服务器

我是能跑,但是想增加一个自动开关服指令
发表于 2023-3-18 16:44 | 显示全部楼层
docker start 和docker stop啊
不过你NAS开机的时候设置docker服务自动启动 也就是systemctl enable docker.service
而你的容器设置为容器自动重启也就是--restart=always
这样不需要sh脚本了.
效果就是你nas开机启动docker服务,然后自动启动你的minecraft容器.
你nas关机,一切自然关闭
发表于 2023-3-18 16:53 | 显示全部楼层
加个sh脚本,然后以你现在的镜像为基础,重新打包一个镜像
发表于 2023-3-19 08:41 来自手机 | 显示全部楼层
写Dockerfile ENTRYPOINT
发表于 2023-3-19 09:00 | 显示全部楼层
道理我都懂 但我还是没明白NAS每天重启一次的意义
发表于 2023-3-19 09:28 | 显示全部楼层
还是威联通....每天开关机....那个速度....
 楼主| 发表于 2023-3-19 20:12 | 显示全部楼层
xiaopang666 发表于 2023-3-19 09:28
还是威联通....每天开关机....那个速度....

起床到上班打卡差不多有50分钟,足够了。
 楼主| 发表于 2023-3-19 20:13 | 显示全部楼层
本帖最后由 阿空kkk 于 2023-3-19 20:17 编辑
hycsy2896 发表于 2023-3-19 09:00
道理我都懂 但我还是没明白NAS每天重启一次的意义


风扇比较吵,晚上直接关掉
 楼主| 发表于 2023-3-19 20:16 | 显示全部楼层
永诺 发表于 2023-3-18 16:44
docker start 和docker stop啊
不过你NAS开机的时候设置docker服务自动启动 也就是systemctl enable docker ...


QQ截图20230319201618.png docker容器开机自启是应用自带功能,但是自启minecraft服务器这个没有
 楼主| 发表于 2023-3-19 20:17 | 显示全部楼层
YsHaNg 发表于 2023-3-19 08:41
写Dockerfile ENTRYPOINT

这一步就难住本菜鸟了
 楼主| 发表于 2023-3-19 20:20 | 显示全部楼层
lionsee123 发表于 2023-3-18 16:53
加个sh脚本,然后以你现在的镜像为基础,重新打包一个镜像

太难了,开服这一段我都是照着教程抄的
发表于 2023-3-19 23:18 | 显示全部楼层
阿空kkk 发表于 2023-3-19 20:17
这一步就难住本菜鸟了

楼上正解,使用 entrypoint 或者 cmd 来给 docker 镜像设置启动命令。
楼主可以搜一下具体怎么写,参考博客:https://www.cnblogs.com/sparkdev/p/8461576.html
发表于 2023-3-20 00:13 | 显示全部楼层
本帖最后由 蓝色星芒 于 2023-3-20 00:21 编辑

方法一,
有做-v 的host和docker的文件映射吗?

如果有的话,那就在host里写个sh,可以以ping通docker为基准,ping不通就结束,ping同就延迟30s左右,使用docker的权限,运行启动服务的命令即可,然后把这个sh写到host的开启启动里。

方法二,
我只在debian系里用过,就说dockerfile添加环境参数运行。或者docker run里添加。
docker run -itd --name *** ***** --restart = always  /bin/bash -c 服务sh的绝对路径 && tail -f /dev/null

没用过这些nas的docker,不太清楚docker的运行模式是什么样式的,不太好说。如果docker中有环境这个选项,可用试试把红色字加进去,tail -f /dev/null是为里让sh循环不退出,否则docker运行一次后就会关掉,也可以写在服务sh的里面最后一行添加一下。
发表于 2023-3-20 02:38 来自手机 | 显示全部楼层
最强发型师tony 发表于 2023-3-19 15:18
楼上正解,使用 entrypoint 或者 cmd 来给 docker 镜像设置启动命令。
楼主可以搜一下具体怎么写,参考博 ...

如果lz是直接类似从dockerhub pull镜像运行就可能没有dockerfile 这种可以把现有容器commit到一个镜像 然后新建dockerfile写FROM刚新建的镜像 之后dockerfile里想怎么改随自己
发表于 2023-3-20 10:06 来自手机 | 显示全部楼层
用compose写后面可以加cmd参数
发表于 2023-3-21 09:27 来自手机 | 显示全部楼层
搜索下docker ssh 这两个关键字,他的做法,默认开机启动sshd ,具体做法。可以在docker file ,或者自己做个脚本,指定开机运行这脚本。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-4-26 16:20 , Processed in 0.011161 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表