前言

CentOS官方宣布

  • CentOS Linux8在2021年底停止更新;
  • CentOS Linux7用户较多,这个版本将在 2024年6月30日停止支持;
  • 未来社区不会再有CentOS Linux的新版本,只有CentOS Stream不断向前发展;

我也不得不寻找CentOS的替代方案;

  • Alpine
  • Debian
  • Ubuntu

都是基于Linux内核的开源操作系统,都可作为Docker的基础镜像使用;

但是这些系统有显著区别,本文记录下在使用这些开源操作系统过程踩过的坑;

一、Ununtu

Ubuntu是基于Debian构建的1个发行版本;

Ubuntu系统里,每个大版本里面都包含不同小版本,每个小版本都有自己的版本名称;

例如

  • Ubuntu 24.04 LTS (noble)
  • Ubuntu 23.10 (mantic)
  • Ubuntu 23.04 (lunar)
  • Ubuntu 22.04 LTs (jammy)
  • Ubuntu 20.04 LTS (focal)
  • Ubuntu 18.04 LTS (bionic)
  • Ubuntu 16.04 LTS (xenial)(EOL)
  • Ubuntu 14.04 LTS (trusty) (EOL)

我们可以使用lsb_release-c或lsb_release -a命令查看

1.apt-get源目录

https://mirrors.aliyun.com/ubuntu/

在使用Ubuntu源时同1个大版本中包含的小版本都可以使用同1个源,例如Ubuntu 22.10(kinetic)和Ubuntu22.04(jammy)等Ubuntu 22.xx小版本都可以使用Ubuntu22.04(jammy)的源;

1.1.dists目录

apt-get源中dist目录记录了Ubuntu的小版本的元数据

1.1.1.大分类

backports:过期功能

1.1.1.1.小分类

每个大分类又包含各种小分类
  • main:完全自由软件
  • restricted:不完全自由软件
  • universe:ubuntu官方不提供支持与补丁,全靠社群支持
  • multiverse:非自由软件,完全不提供支持和补丁

secuirty:安全

updates:更新

proposed:预发布

1.2.pool目录

dists:记录了Ubuntu的小版本的元数据,pool目录才是真正存储包的目录;

2.ubuntu指定apt-get源

在ubuntu的/etc/apt/sources.list可以配置apt-get安装软件包时使用的源;

sed -i "s@deb http://security.ubuntu.com@deb [trusted=yes] https://mirrors.aliyun.com@g" /etc/apt/sources.list
sed -i "s@deb http://archive.ubuntu.com@deb [trusted=yes] https://mirrors.aliyun.com@g" /etc/apt/sources.list

信任源不需要公钥验证

deb [trusted=yes] https://https://mirrors.aliyun.com/ubuntu/ bionic-updates universe

 取消源验证

echo "Acquire { https::Verify-Peer false }" > /etc/apt/apt.conf.d/my-verify-peer.conf 

更新源

当/etc/apt/sources.list配置文件发生修改时需执行apt-get update命令进行更新

apt-get update

3.签名验证

以上在在ubuntu的/etc/apt/sources.list配置文件中配置[turned-yes]项,是指定apt-get完全信任该源,通常是企业内部的源;

如果是阿里云、华为云的源可以去这些对外公开的源,可以去远端源的Release.key文件中下载公钥到本地;

然后再在本地的/etc/apt/sources.list配置文件中指定本地的公钥[signed-by=/etc/apt/keyrings/xx-keyring.gpg];

apt-get安装每1个软件包都需要使用公钥进行数字签名,公钥保存在本地的/etc/apt/trusted.gpg.d/目录;

公钥保存在远端源的Release.key文件中,下载之后需要gpg --dearmor转换为gpg格式才能被apt-get命令所使用;

wget https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg Release.key
curl -fsSL htps://mirors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key | gpg --dearmor -o/etc/apt/keyrings/kubernetes-apt-keyring.gpg

/etc/apt/sources.list中使用公钥

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes.new/core/stable/v1.30/deb/ /

4.PPA

PPA 全称为 Personal Package Archives(个人软件包档案);

Ubuntu Launchpad官方源网站提供的1项服务,当然不仅限于 Launchpad 。

PPA允许个人用户上传软件源代码,通过Launchpad进行编译并发布为二进制软件包,作为apt-get新的源供给其他用户下载和更新。

在Launchpad网站上的每1个用户和团队都可以拥有1个或多个PPA。

通常PPA源里的软件是官方源里没有的,或者是最新版本的软件。

相对于通过Deb包安装来说,使用 PPA 的好处是,一旦软件有更新,通过 sudo apt-get upgrade 这样命令就可以直接升级到新版本。

PPA源软件包安装流程

1.搜索PPA软件源,如在Google上软件名称关键字 + PPA ,或者也可直接到 launchpad.net 上搜索
 
 2.sudo apt-add-repository  ppa_source_name    //添加PPA源添加到源列表(/etc/apt/sources.list)
 
 3.sudo apt update   //访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑,即获取软件的最新更新信息
 
 4.udo apt-get install [ppa源对应的软件包名]      //下载安装

配置PPA源

sudo apt-add-repository ppa:ubuntu-mozilla-daily/ppa

更新PPA源

 sudo apt-get update
 sudo apt-get install firefox-4.0

Dockerfile

在Ubuntu上安装Docker

FROM codercom/code-server:4.1.0

USER root

RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
            apt-transport-https \
            ca-certificates \
            curl \
            gnupg2 \
            software-properties-common; \
    curl -fsSL https://repo.huaweicloud.com/docker-ce/linux/debian/gpg | sudo apt-key add -; \
    add-apt-repository "deb [arch=amd64] https://repo.huaweicloud.com/docker-ce/linux/debian $(lsb_release -cs) stable"; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
            docker-ce-cli; \
    rm -rf /var/lib/apt/lists/*

USER 1000
ENV USER=coder

CMD ["bash"]
安装docker-ce-cli

 

二、Debian

Ubuntu是基于Debian构建的1个Linux发行版;

1.发行版目录

被淘汰的 Debian 正式发行版的网页信息已被原封不动地保留,但是这些发行版本身只能在单独的存档中找到。

请参考 Debian FAQ 中关于所有这些版本代号的由来的相关说明信息。

 

三、Alpine

Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。

Alpine Linux 网站首页注明“Small!Simple!Secure!Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.”概括了

1.特点

  • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
  • 安全:面向安全的轻量发行版;
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

2.apk包管理

Alpine使用apk包管理器

2.1.使用企业内部源

sed -i 's%https://dl-cdn.alpinelinux.org%私有源地址%g' /etc/apk/repositories;

apl add xxpackage --allow-untrusted添加信任内部源

    apk add --no-cache \
        ca-certificates \
        vim \
        bash \
--allow-untrusted; \

 

 

 

 

Debian

Ubuntu

posted on 2024-10-12 16:32  Martin8866  阅读(11)  评论(0编辑  收藏  举报