前言

自从上次发现有一台Linode VPS使用的centos8已经被淘汰,不再被官方支持后,就一直想找个时间把centos8系统改为ubuntu系统(更多具体细节可跳转,解决Centos 8 因版本太旧无法安装或更新包的问题 )。

因为之前已经采用了docker+traefik进行部署(之前用traefik统一做反代就是为了方便备份,具体跳转:Docker-compose安装Traefik2基本配置文件),预测只要把配置文件备份好,就算换系统也能快速恢复,不必担心换系统带来诸多恢复麻烦,于是开干。

要快速更改系统,你需要另外一台VPS保存文件,因为重做系统的VPS会丢失所有文件,也就是说最少2台VPS,一台重做系统,一台备份文件。

一、备份配置文件

1. 压缩需要备份配置文件

涉及文件传输,有经验的都知道,文件数量越多,传输的速度越慢(参考window不同盘间传输文件的速度)。

因上第一步最好在要更改系统VPS打包所有配置文件为压缩包,linux中用到的压缩命令是 tar。以下就以本站vps为重做系统VPS为例

因为以前应用的部署都是有组织的目录结构,现只需要备份/root/下的配置文件即可

Linode 把Centos8系统改为Ubuntu 20.04Lts全过程

使用tar命令

cd /root
tar -zcvf jp_zctou_root.tar.gz  /root/ 

2. 远程传输备份文件

SSH登录备份用的VPS,使用scp命令远程拉取刚生成的备份文件jp_zctou_root.tar.gz

使用scp命令

cd /root
scp -P 22 root@重做系统VPS的ip:/root/zctou/jp_zctou_root.tar.gz  /root/jp_zctou_root.tar.gz

输入远程机,也就是重做系统VPS的密码,即可拉取文件成功。

这里可能出现 ssh remote host identification has changed 的错误,那是验证出错的问题,具体解决办法可跳转: Linux 服务器用scp命令复制文件出错解决办法

二、Linode VPS重做系统

确认文件备份成功后,即可把linode vps的系统重做,把原本的centos8 改成 ubuntu20.04lts。具体步骤如下:

进入Linodes后台,找到对应的nodes,选rebuid弹出如下界面,选择系统为ubuntu20.04 LTS

Linode 把Centos8系统改为Ubuntu 20.04Lts全过程

三、拉回配置文件并安装docker

SSH登录重做系统的VPS,使用scp命令远程拉回备份文件jp_zctou_root.tar.gz

1. 拉回文件并解压

cd /root
scp -P 22 root@备份用VPS的ip:/root/jp_zctou_root.tar.gz  /root/jp_zctou_root.tar.gz
# 解压
tar -zxvf jp_zctou_root.tar.gz
# 移动zctou文件夹下所有文件到root
mv root/zctou /root

2. 安装docker

安装命令

A. 卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

B. 设置 repository安装

# 1.Update the apt package index and install packages to allow apt to use a repository over HTTPS:
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    
# 2.Add Docker’s official GPG key:
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3.Use the following command to set up the repository:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

C. 安装docker

# 1.Update the apt package index
sudo apt-get update

# 2.Install Docker Engine, containerd, and Docker Compose.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

检验docker是否安装成功

sudo docker run hello-world

更多详细说明,参考官方说明:https://docs.docker.com/engine/install/ubuntu/

3. 安装docker-compose

安装命令

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

查看是否安装成功:

docker compose version
# Docker Compose version v2.16.0 

显示 Docker Compose version v2.16.0表示安装成功。

更多详细说明,参考官方说明:https://docs.docker.com/compose/install/other/

更新docker-compose方法

A.卸载原有docker compose

以下三种命令皆可卸载,看你的系统装了哪个命令。

apt-get

sudo apt-get remove docker-compose

curl

sudo rm /usr/local/bin/docker-compose

pip

pip uninstall docker-compose

B.安装最新docker-compse

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

安装成功后,查看docker compose 版本:

docker compose version
Docker Compose version v2.16.0

更详细的阅读,可跳转官方指引页:https://docs.docker.com/compose/install/other/

四、利用docker-compose拉起容器

只要安装好docker以及docker compose后,先拉起traefik2占用80与443端口,再拉起其他容器即可。

运行traefik

1、先创建proxy网络(之前已经配置好:Docker-compose安装Traefik2基本配置文件):

docker network create proxy

2、运行traefik

cd /root/traefik2
docker-compose up -d

运行成功后再用其他docker-compose拉起相应的应用,搞定。