“写笔记”支持四种格式——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)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
Portainer
Portainer — 轻量级Docker可视化面板,让容器管理像点鼠标一样简单。
如果你用过Docker,一定经历过那种“黑框框里敲命令”的酸爽。刚开始觉得挺酷,时间一长,尤其是管理多个容器、多个主机时,满屏的docker ps、docker logs、docker exec -it简直让人头大。更别提还得记住端口映射、卷挂载、网络配置这些参数——写错一个字母,容器直接罢工。
这时候,Portainer出现了。它不是一个“替代Docker”的工具,而是给Docker(以及后来的Kubernetes)套上了一层漂亮的图形界面。你不需要再记那些长串的命令,点几下鼠标,就能完成创建容器、管理镜像、查看日志、调整网络、备份恢复等几乎所有操作。说白了,它就是Docker世界的“控制面板”,把复杂的容器化技术,变成了人人都能上手的可视化工具。
它能解决什么问题?
- 告别命令行恐惧:团队里不是每个人都愿意背Docker命令。给前端同事、测试同学或者运维新手一个Portainer,他们也能轻松管理容器。
- 多主机统一管理:如果你有十几台服务器,每台都跑着Docker,以前得SSH到每一台去操作。Portainer支持“环境”概念,一个界面就能管理所有节点,甚至包括Swarm集群。
- 快速排错:容器挂了?日志在哪看?网络通不通?Portainer的实时日志、控制台接入、状态监控,比敲
docker logs -f直观十倍。 - 资源可视化:CPU、内存、磁盘、网络流量,全部用图表展示,一眼看出哪个容器在“吃资源”。
下载与安装
Portainer官方提供了两种版本:Community Edition(CE) 完全免费,功能足够个人或小团队使用;Business Edition(BE) 增加RBAC、团队管理、审计日志等企业功能,但需要付费。
官方下载地址:Portainer官网
GitHub仓库:Portainer GitHub
安装方式极其简单,因为它自己就是一个Docker容器。你只需要在已安装Docker的服务器上,运行下面这条命令(以CE版为例):
docker run -d -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
解释一下参数:
-p 9000:9000:把容器的9000端口映射到宿主机,访问http://你的IP:9000就能打开界面。-v /var/run/docker.sock:/var/run/docker.sock:挂载Docker的Unix套接字,这样Portainer才能“看见”并管理本机的Docker守护进程。-v portainer_data:/data:持久化存储Portainer本身的配置、数据库等数据,容器重启或更新不会丢失。--restart=always:让Portainer随Docker自动启动。
如果你用的是Windows或Mac,也可以直接通过Docker Desktop的终端运行上面命令,或者用Portainer提供的Docker Compose文件。更懒一点,官方还提供了一键安装脚本(仅限Linux):
curl -L https://downloads.portainer.io/portainer-ce.sh | bash
不过我还是推荐手动跑容器,心里更踏实。
基础使用教程
安装完成后,浏览器访问http://服务器IP:9000。第一次打开会让你创建管理员账号(用户名和密码)。然后进入主界面,你会看到几个核心区域:
1. 连接你的Docker环境
默认情况下,Portainer已经通过挂载的docker.sock连接到了本机的Docker。你会在“环境”列表里看到一个叫“local”的环境,状态是“已连接”。如果你有多台服务器,可以点击“添加环境”,选择“Docker API”或“Agent”模式,输入远程主机的IP和端口即可。
2. 容器管理
点击左侧“容器”,会列出所有运行中的容器。每个容器卡片显示:名称、状态、端口映射、镜像、创建时间。你可以:
- 启动/停止/重启:一键操作。
- 查看日志:实时滚动输出,支持按关键词过滤。
- 进入控制台:相当于
docker exec -it,在浏览器里直接打开容器的bash或sh终端。 - 查看统计:CPU、内存、网络I/O的实时图表。
- 删除/重建:注意,删除会连带数据卷一起清理,提前备份。
3. 镜像管理
在“镜像”页面,你可以:
- 拉取镜像:输入镜像名(如
nginx:latest),点“拉取”即可。 - 构建镜像:上传Dockerfile,或者从Git仓库拉取源码自动构建。
- 删除/导出:清理不用的镜像释放磁盘空间。
4. 网络与数据卷
- 网络:创建bridge、host、overlay等网络,并把容器连接到指定网络。
- 数据卷:创建持久化卷,或挂载宿主机目录。支持NFS等远程存储。
5. 应用模板
这是Portainer最实用的功能之一。它内置了常用的应用模板(如Nginx、MySQL、WordPress、Redis等),你只需要点“部署”,填写端口、密码等参数,剩下的环境变量、卷挂载、网络配置,Portainer自动帮你搞定。适合快速搭建开发环境或测试服务。
进阶技巧
1. 用Portainer管理Docker Swarm集群
如果你在生产环境用了Swarm集群,Portainer能让你像管理单机一样管理集群。部署时选择“Swarm”环境类型,Portainer会自动发现集群中的节点、服务、任务。你可以在界面上直接创建Stack(对应docker-compose文件),或者部署服务并设置副本数、更新策略。
2. 设置安全访问
Portainer支持HTTPS和LDAP/OAuth集成。在“设置” -> “认证”里,可以配置外部认证源,让公司员工用自己的账号登录。还可以在“环境”里设置每个用户的访问权限——比如只允许查看某个命名空间下的容器。
3. 使用Portainer Agent管理远程主机
如果远程主机没有开放Docker API端口(2375/2376),或者你不想暴露这个端口,可以安装Portainer Agent。在远程主机上运行:
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:latest
然后在主Portainer界面添加环境时选择“Agent”模式,输入远程主机IP和9001端口即可。Agent会通过加密通信与主Portainer交互,安全性更高。
4. 备份与恢复
Portainer的所有配置数据都存储在/data目录下(即你挂载的portainer_data卷)。要备份,直接把这个目录打包:
docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar cvf /backup/portainer_backup.tar /data
恢复时把tar文件解压到新容器的/data目录即可。
5. 使用API自动化
Portainer提供了RESTful API,你可以通过编程方式管理容器、创建环境、执行操作。比如用curl创建一个容器:
curl -X POST http://你的IP:9000/api/endpoints/1/docker/containers/create \
-H "Authorization: Bearer 你的API密钥" \
-H "Content-Type: application/json" \
-d '{"Image": "nginx:latest", "ExposedPorts": {"80/tcp": {}}}'
API密钥在用户设置里生成。配合脚本或CI/CD工具,可以实现自动化部署。
最后说一句,Portainer不是万能的。它不能替代对Docker原理的理解——比如网络模式、存储驱动、安全策略这些底层概念,你该学还是得学。但它确实能帮你省下大量重复敲命令的时间,尤其适合多主机、多用户、需要快速交付的场景。如果你还在用“记事本+SSH”管理容器,不妨花10分钟装一个Portainer,体验一下什么叫“可视化真香”。