笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
服务器重启后 Docker 容器全没起来、顺序还乱?自启加依赖一次理清
服务器一重启,Docker 里一堆容器全没起来,还得手动一个个 start;就算起来了,顺序也不对——应用容器先跑、数据库后跑,应用连不上库直接崩。很多人配了 restart: always 也没用,因为漏了最基础的一步:让 Docker 服务本身开机自启。
第一步:先让 Docker 服务本身自启(最多人漏的)
很多"重启后容器没起来",其实根本不是容器策略的问题,是 dockerd 压根没起来。容器是靠 Docker 守护进程拉起来的,dockerd 没自启,容器策略再对也是空谈:
systemctl enable docker.service
第二步:给容器加自启策略
三种方式,任选:
- 启动时直接指定:
docker run -d --restart=always --name app 你的镜像 - 已经存在的容器补设(不用重建):
docker update --restart=always <容器ID> - Compose 里写:
services: app: image: 你的镜像 restart: always
策略有四个取值:no(不自动重启)、on-failure(非 0 退出才重启)、unless-stopped(除非手动 stop,否则开机/异常退出都拉起)、always(总是重启)。服务器上一般用 unless-stopped 或 always 就行。
理解 restart 策略的两个隐藏规则
- 策略只在容器成功启动后才生效(通常指稳定运行 10 秒以上)。如果容器一启动就崩,dockerd 不会无限拉起,会放弃。
- 手动
docker stop掉的容器会忽略策略,直到 dockerd 重启。也就是说:你手动停的容器,重启服务器后反而会被拉起来——这跟直觉相反,但确实是这么设计的。
第三步:控制启动顺序——depends_on 不够,要 healthcheck
dockerd 重启时不读 compose 的 depends_on,它只会按 restart 策略把所有容器同时拉起。想控制顺序,标准做法是"依赖 + 健康检查":
services:
db:
image: mysql:8.0
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
app:
image: 你的应用
depends_on:
db:
condition: service_healthy
restart: always
condition: service_healthy 的意思是:等 db 的健康检查通过(MySQL 真正能接受连接)之后,app 才启动。这比单纯的 depends_on(只管先后不管就绪)靠谱得多。再给 depends_on 加 restart: true,这样 db 重启时 app 会跟着重启。
第四步:跨多个 compose 文件的依赖
如果你把数据库和应用分成两个 compose 文件(db.yaml、app.yaml),直接在 app.yaml 里 depends_on db 会报错:
service "app" depends on undefined service "db": invalid compose project
这不是 bug,是两个 compose 文件属于两个独立项目,互相看不到对方的服务。解决办法是合并成一个项目——用 include: 把 db.yaml 引进来:
# app.yaml
include:
- db.yaml
services:
app:
...
depends_on:
db:
condition: service_healthy
官方对"两个 compose 想互相依赖"的回答就是:include 合成单个项目再写依赖。
几个容易搞混的
- compose 的
restart: always和depends_on各管各的:前者管"拉起",后者管"先后"。别指望 depends_on 能保证重启顺序。 - 用的是 Docker Swarm 的话,compose 里的 restart 不生效,得用
deploy.restart_policy。 - 容器起来了但应用还是连不上库,优先怀疑"就绪问题"而不是"顺序问题"——等健康检查通过再起应用才能根治。
参考出处:
https://forums.docker.com/t/ensuring-automatic-restart-and-sequential-startup-of-docker-containers/144546
https://www.cnblogs.com/haima/p/13155625.html