SEO 百科

Docker 与容器

本页目录

Docker 与容器

Docker 是一个把应用和运行环境一起打包、分发和运行的开放平台,打包出来的单元叫容器[1]。容器里装好程序、依赖和配置,换一台机器也能用同样的方式跑起来。站长关心的是:它让环境一致、迁移方便,代价是多出一层网络和存储,日志与备份要另外安排。

容器与虚拟机的区别

容器不是虚拟机。Docker 用 Linux 内核的命名空间给容器做隔离,多个容器共用一个内核[1]。虚拟机各自跑一套完整系统,容器只隔离进程看到的资源,所以启动更快、占用更小。

官方还把两者放在一起比较。Docker 说明自己“提供了一种可行的、更具成本效益的替代方案”,用来替代基于虚拟机监控程序的虚拟机[1]。

把站点放进容器的好处

容器化这几年被广泛采用。CNCF 的年度调查在 2024 年秋天访问了 750 名从业者,用来观察容器与云原生的采用情况[7]。

  • 环境一致:镜像把程序、依赖和版本一起固定,开发机上能跑,服务器上照样能跑[1]。
  • 迁移方便:把镜像搬到另一台机器就能启动,不用重装环境。
  • 相互隔离:容器之间默认互相隔离,一个服务出问题不容易带倒别的[3]。
  • 反复利用:同一份镜像可以在多台机器上启动多个实例。

面板也在接入容器。1Panel 把应用部署在容器里[5],宝塔面板提供 Docker 容器可视化[6]。

容器带来的新麻烦

多一层网络。容器默认接在 Docker 自己的网桥上,端口要显式发布到主机,外部才访问得到[3]。域名解析、伪静态、防火墙和证书都落在容器外的主机上。

多一层存储。容器的可写层随容器删除而消失,数据要放进卷里才能留住[2]。卷由 Docker 管理,备份时要按卷来备,而不是直接复制目录。

日志要另收。容器把应用输出写进自己的日志,容器删掉日志也一起没了。

备份要另做。Docker 提供了备份和恢复卷的办法[2]。数据库与配置要一起备齐,缺一样就还原不出完整站点。

容器里的网页服务与抓取

抓取工具只看网站对外的响应,不关心页面由容器还是由主机上的程序生成。同一个程序放进容器,返回的页面和直接装在主机上一样。

真正影响抓取的是容器外的配置。

  • 端口发布:容器端口没发布,外部访问不到,爬虫也抓不到。
  • 反向代理:主机上的 Nginx 把域名转到容器,规则写错会返回 502。
  • 响应时间:容器资源限得太死,响应变慢,Google 会调低抓取量[4]。
  • HTTPS:证书装在容器外还是容器内,决定爬虫拿到的内容是否一致。

所以同一套镜像,换一种端口或代理配置,抓取结果就不同。

常见误用

  • 把数据写在容器里。容器一重建,数据一起没了。
  • 端口没发布就去查防火墙。外部访问不到的根因常在发布配置。
  • 备份只备卷,漏掉主机的代理与证书配置。
  • 给容器设了过低的内存上限,页面响应变慢,抓取量跟着下降。

附录

参见

参考资料

官方(境外)

  1. 《What is Docker?》,Docker Docs。
  2. 《Volumes》,Docker Docs。
  3. 《Networking overview》,Docker Docs。
  4. 《面向大型网站所有者的抓取预算管理指南》,Google 搜索中心。

官方(国内)

  1. 《产品介绍》,1Panel。
  2. 《宝塔面板》,宝塔面板。

第三方

  1. 《Cloud Native 2024: Approaching a Decade of Code, Cloud, and Change》,CNCF,2025-04-01。

外部链接

无。