用户注册 登录
珍珠湾全球网 返回首页

岳东晓 -- 珍珠湾全球网 ... https://ydx.zzwave.com [收藏] [复制] [分享] [RSS] 岳东晓 -- 珍珠湾全球网

日志

什么是多客(Docker)

已有 443 次阅读2024-12-5 08:34 |个人分类:计算机|系统分类:科普

什么是多客(Docker): 前些天谈到如何将10多年前的网站成功用 Docker 进行容器化在新版 Linux 运行的故事。有读者提出将机器转换为虚拟机也是一个解决方案。确实如此,我开始也试图这么做。由于关机拷贝硬盘耗时耗力,我先将系统文件远程拷贝一个虚拟硬盘,然后在虚拟硬盘上重建 GRUB ,这是Linux常用的 boot loader -系统启动加载器。但是虚拟机启动后,出现各种内核错误,软件、硬件的都有,修复一个,又出现一个 kernel panic。由于这种系统启动时的错误很难 debug,看似最直接的方案却是费力不讨好。因为这是试图把古老的东西原样复活,它无法享受这些年操作系统的发展与安全性增强。Docker 容器化则不同。Docker 的基本原理是让一个程序自带它的用户运行环境,好像它还是在原来的环境下,而实际上它是享受另一个操作系统的核心功能。

要明白这一点,先得知道什么是用户运行环境什么是操作系统核心。Linux 操作系统提供一系列的调用称为 system call (系统调用)。所有核心标准 syscall 都在 vmlinuz 一个文件里。像 open/close/read/write/socket/fork 等都是 system call, 系统核心自带。而一般码农涉及的代码均为用户级代码,在 /usr/ 目录下,如 libc (C 函数库)就是用户级代码,它们往往可能需要调用 system call。Linux 经过这么多年发展,但它的 system call 接口非常稳定,而且是基本是反向兼容的,也就是说老的用户代码可以在新系统下运行。一个程序的运行往往依赖于特定的用户级函数库,如果给它一个环境,自带这些函数库,它在新的 Linux 系统下也能运行。Docker 就是解决这个问题。Docker 能给程序提供一个独立的用户级运行环境,与其他程序互不干扰。这叫做 Docker Container。通过容器化,原有老系统下的软件就可以在新的 LINUX版本下运行,而且每个软件都在自己的小屋子里,以为还是老系统,不知道外面已经变天了。由于LINUX系统调用接口的稳定性,甚至为新版 LINUX 设计的软件往往也可以在老版的 LINUX 下的 Docker 下运行 -- 自带新版的用户级运行环境即可。

#计算机#

网站迁徙记:9月,开车到达法国鲁瓦河谷的安伯瓦(Ambois) 正要去参观城堡,却下起了大雨,于是在城堡附近找了个地方吃午餐。听到旁边桌子的几个人在大声聊天,一听就是来自美国,其中一人在讲精彩故事,大概说是他们公司有台计算机用于处理财务信息,已经运行20、30年了,谁也不敢重启,怕重启就起不来了,里面的软件也当然是老的,没法更新。。。午餐完毕,雨也停了,大家都往外走,我对那位应该是资深系统管理员的男士说,“I couldn't help listening to your interesting stories." 那位说,我的IT趣闻还可以讲上两天。大家哈哈一笑,各自游玩去了。

回来后,我也面临类似的问题,有两个网站还是十多年前建的,使用的软件有的是我20多年前写的,有的十多年前的第三方软件。网站服务器还是10多年前的,用的 CPU 是 AMD Opteron,曾经引发 AMD64 革命的CPU,现在步伐依然坚如磐石,但速度已经大大落后于 EPYC;大量文件还是存在机械硬盘上,靠旋转拼速度;LAMP 平台是 Apache + Mysql 5.x + Php 5.6 + Perl5 ;操作系统也是10多年前的 CentOS 与 Ubuntu。这些版本都已经步入历史,现在要进行升级已经相当困难。MySQL 与 PHP 新版都已经引入了不少不能反向兼容的变化,要修改代码是个需要很多时间的工作 。。。鉴于此,我也不敢重启系统,万一起不来,可能得去机房。

一个网站也是人们的记忆,系统一坏就可能永远消失了,而责任在我。这样提心吊胆总不是办法。怎么办?经过几天的工作,终于得到解决。使用 DOCKER 把原有系统各部分容器化。MySQL 用 5.7 的 Docker image, Apache+Php5.6 也有可用的 Docker, 自己增加若干扩展, Memcached 等都有各自的 Docker image。前端采用 Nginx 处理静态文件以及作为 Reverse Proxy 到 Apache。Perl 5 兼容性教好 -- 多年来基本没变,但 DBD::mysql 只能找出 4.x 版本源代码编译。即便如此,网站代码还是多处出现错误,但经过 debug 与较小的修改,终于基本正常工作 -- 有源代码还是好。有了这些,今后无所畏惧,随时随地随机云端部署,原来的服务器也不需要了。

顺便推荐两个工具,一个是 MobaXterm -- 这是一个 SSH/VNC/RDP 工具,自带X服务器,功能强大非常好用。另一个是 tmux -- 能够运行多个 terminal,轻松切换、附着、离开。

#计算机#

路过

鸡蛋

鲜花

支持

雷人

难过

搞笑
 

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 用户注册

Archiver|手机版|珍珠湾全球网

GMT+8, 2025-1-23 15:38 , Processed in 0.014441 second(s), 8 queries , Memcache On.

Powered by Discuz! X2.5

回顶部