基于华为云欧拉操作系统(HCE OS)构建HCE OS基础镜像

写在前面


  • 博文内容为 华为云欧拉操作系统入门级开发者认证(HCCDA – Huawei Cloud EulerOS)实验笔记整理
  • 认证地址:https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1
  • 当然也适用于其他的 Linux 系统构建基础镜像
  • 理解不足小伙伴帮忙指正

不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树


为什么需要基于华为云欧拉操作系统(HCE OS)构建 HCE OS 基础镜像?

在日常生产中,我们可能下面一些诉求,比如企业上云,之前是通过华为云欧拉系统ECS直接部署的,但是后来要求容器化,那么考虑兼容性和稳定性,需要把当前 ECS 的环境做成基础镜像,供容器化使用,基于 HCE OS 构建 HCE OS 基础镜像可以确保与华为云平台的兼容性和稳定性。这意味着镜像可以更好地集成和运行在华为云环境中,确保系统的可靠性和性能。

同时华为云欧拉操作系统是华为云平台的一种操作系统,它可能专门针对特定的云环境和应用场景进行了定制。通过基于 HCE OS 构建 HCE OS 基础镜像,可以满足特定的业务需求和定制化要求。

容器安全性方面考虑,华为云欧拉操作系统通常会提供一些安全增强功能和机制,以确保在云环境中的数据和应用的安全性。基于 HCE OS 构建 HCE OS 基础镜像可以继承这些安全特性,以提供更高的安全级别

生态系统支持,华为云平台通常会提供一整套生态系统工具和服务,如监控、自动化部署、弹性伸缩等。基于 HCE OS 构建 HCE OS 基础镜像可以更好地集成这些工具和服务,以提供更完整的云解决方案。

实验环境

[root@ecs-hce ~]# hostnamectl Static hostname: ecs-hceIcon name: computer-vmChassis: vmMachine ID: 91874445890c4df3958af4e0072eb5ffBoot ID: a6e3464ca4c646d9bfaceb94baa3a3cdVirtualization: kvm
Operating System: Huawei Cloud EulerOS 2.0 (x86_64)Kernel: Linux 5.10.0-60.18.0.50.r865_35.hce2.x86_64Architecture: x86-64Hardware Vendor: OpenStack FoundationHardware Model: OpenStack Nova
[root@ecs-hce ~]# 

安装 Docker

添加桥接网卡

在安装 Docker 时添加桥接网卡是为了创建一个本地的网络环境,使 Docker 容器能够与主机和其他容器进行通信。

Docker 使用桥接网络模式作为默认网络模式。在桥接网络模式下,创建一个名为docker0的桥接接口,它充当 Docker 容器连接到主机网络的网桥。这个桥接接口允许Docker容器通过主机的网络接口与外部网络通信,并通过桥接接口互相通信。

[root@ecs-hce ~]# ip link add name docker0 type bridge

创建了一个名为docker0的桥接接口。桥接接口是用于连接多个网络设备的虚拟设备,可以将多个网络设备组成一个局域网。

[root@ecs-hce ~]# ip addr add dev docker0 10.0.0.1/8

为 docker0 接口添加了一个 IP 地址。具体来说,它将 IP 地址 10.0.0.1/8 分配给了 docker0 接口。IP 地址 10.0.0.1/8 表示一个具有 8 位子网掩码的 IPv4 地址,其中前 8 位是网络部分,后 24 位是主机部分

安装 Docker

[root@ecs-hce ~]# dnf -y install docker >> /dev/null
Failed to set locale, defaulting to C.UTF-8
retrieving repo key for updates unencrypted from http://repo.huaweicloud.com/hce/2.0/updates/RPM-GPG-KEY-HCE-2
Importing GPG key 0xA8DEF926:Userid     : "HCE <support@huaweicloud.com>"Fingerprint: C1BA 9CD4 9D03 A206 E241 F176 28DA 5B77 A8DE F926From       : http://repo.huaweicloud.com/hce/2.0/updates/RPM-GPG-KEY-HCE-2
[root@ecs-hce ~]# which docker
/usr/bin/docker

修改 /etc/docker/daemon.json 配置文件,添加镜像仓库地址

[root@ecs-hce ~]# vi /etc/docker/daemon.json
[root@ecs-hce ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://094f6e8c9700f3060f39c0043d3e15c0.mirror.swr.myhuaweicloud.com"]
}

这里可能根据实际情况做一些其他的配置,比如修改镜像文件存放位置,最好配置到容量可扩展的位置,容器日志文件大小,保留数量、日志驱动等, cgroup驱动程序(“systemd"或"cgroupfs”)等相关配置

启动 Docker

[root@ecs-hce ~]# systemctl enable docker --now
[root@ecs-hce ~]# systemctl restart  docker

确认配置结果

[root@ecs-hce ~]# docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 0
Server Version: 18.09.0
Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Hugetlb Pagesize: 2MB, 1GB, 2MB, 1GB (default is 2MB)
Plugins:Volume: localNetwork: bridge host macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b552a1e4ad1fd899da8a91965aa23e64d0cb3713
runc version: 310245ac9b55f190f9c49642f524db4b089d5861
init version: N/A (expected: )
Security Options:apparmorseccompProfile: default
Kernel Version: 5.10.0-60.18.0.50.r865_35.hce2.x86_64
Operating System: Huawei Cloud EulerOS 2.0 (x86_64)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.33GiB
Name: ecs-hce
ID: JA2S:67TN:CCT2:BBVQ:RKF2:IAMC:BXM7:LQGS:X7VV:FKQM:NEUA:2KW6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:127.0.0.0/8
Registry Mirrors:https://094f6e8c9700f3060f39c0043d3e15c0.mirror.swr.myhuaweicloud.com/
Live Restore Enabled: true

制作 HCE-OS 基础镜像

制作 Docker 镜像本地源

创建一个名为/hce-x86-server 的目录,用于安装软件包。

[root@ecs-hce ~]# mkdir /hce-x86-server && yum -y --releasever=2.0  --installroot=/hce-x86-server/ install yum net-tools bash-completion iputils vim >> /dev/null
Failed to set locale, defaulting to C.UTF-8

使用 yum 包管理器在指定的安装根目录/hce-x86-server 下安装了一些软件包。具体安装的软件包包括 yum(用于管理软件包)、net-tools(包含一些网络工具)、bash-completion(用于命令自动补全)、iputils(包含一些网络实用工具)和 vim(文本编辑器)

上面的这个命令同时会把制作镜像涉及到的一些元数据下载下来。--installroot 会在指定的目录下生成一个根文件系统roofs--releasever=2.0 用于指定发行版

这里为什么选择 yum net-tools bash-completion iputils vim 这几个工具,因为一个发行版的容器镜像一般包含这几个,包管理器,外壳程序,一些网络测试,文本编辑的实用程序。将以上工具及其依赖安装到一个特定的目录,那么这个目录就可以作为rootfs使用

这里其他的Linux发行版需要根据实际修改命令

拷贝系统环境变量到Docker镜像中

复制/etc/skel/目录下的.bash*文件到/hce-x86-server/root 目录,并清空/hce-x86-server/root/.bash_history 文件

[root@ecs-hce ~]# cp /etc/skel/.bash* /hce-x86-server/root && echo " " >/hce-x86-server/root/.bash_history
[root@ecs-hce /]# ls
CloudrResetPwdAgent  boot  etc             home  lib64       media  opt   root  sbin  sys  usr
bin                  dev   hce-x86-server  lib   lost+found  mnt    proc  run   srv   tmp  var
[root@ecs-hce /]# cd hce-x86-server/
[root@ecs-hce hce-x86-server]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@ecs-hce hce-x86-server]# cd root/
[root@ecs-hce root]# ls
[root@ecs-hce root]# ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .viminfo
[root@ecs-hce root]#

进入到镜像文件目录,打包根目录

[root@ecs-hce root]# cd /hce-x86-server
[root@ecs-hce hce-x86-server]# tar -zcvpf /root/hce-x86-server.tar --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .

导入镜像包至 Docker

[root@ecs-hce hce-x86-server]# docker import /root/hce-x86-server.tar hce/hce-x86-server:202401
sha256:7b8fb730c9f615d167dfa29491cd1f27172d54ae8dc9f1095f46c87970a25ada
[root@ecs-hce hce-x86-server]# docker images|grep hce
hce/hce-x86-server   202401              7b8fb730c9f6        12 seconds ago      518MB

运行镜像测试

[root@ecs-hce hce-x86-server]# docker run -itd  hce/hce-x86-server:202401 /bin/bash
ad84d622292583c9280c33b42ee25ef32b41b648478faf963da32a156bae4915
[root@ecs-hce hce-x86-server]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
ad84d6222925        hce/hce-x86-server:202401   "/bin/bash"         15 seconds ago      Up 12 seconds                           festive_matsumoto

进入容器执行命令测试

[root@ecs-hce hce-x86-server]# docker exec -it ad84d6222925 bash
[root@ad84d6222925 /]# ls
bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  sbin  srv  sys  tmp  usr  var
[root@ad84d6222925 /]# exit
[root@ecs-hce hce-x86-server]#

到这里我们就基于当前系统环境创建了一个基础镜像

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知:)


https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1


© 2018-2024 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 主键策略导致的效率性能

MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一)&#xff0c;而是推荐连续自增的主键id&#xff0c;官方的推荐是auto_increment 一、准备三张表 分别是user_auto_key&#xff0c;user_uuid&#xff0c;user_random_key&#xff0c;分别表示自动增长的主键…

【开源】JAVA+Vue.js实现在线课程教学系统

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…

C#,雷卡曼数(Recamán Number)的算法与源代码

1 雷卡曼数&#xff08;Recamn Number&#xff09; 雷卡曼数&#xff08;Recamn Number&#xff09;&#xff0c;即Recaman序列被定义如下&#xff1a; (1) a[0]0; (2) 如果a[m-1]-m>0并且这个值在序列中不存在&#xff0c;则a[m]a[m-1]-m; (3) 否则a[m]a[m-1]m; 雷卡曼序…

OCP使用web console创建和构建应用

文章目录 环境登录创建project赋予查看权限部署第一个image检查pod扩展应用 部署一个Python应用连接数据库创建secret加载数据并显示国家公园地图 清理参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 登录 在 crc start 启动crc时&#xff0c;可以看到&#xff1a; .....…

蓝桥杯备赛Day9——链表进阶

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1 输出:[]示例 3: 输入:head = [1,2], n = 1 输出:[1]提示: 链表中结点的数目为 sz1 <= sz <= 300 &l…

Linux操作系统基础(二):Linux操作系统概述

文章目录 Linux操作系统概述 一、Linux起源 二、Linux 的含义 三、Linux发行版 Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间实现的 Linux的特点&#xff1a;开源、免费、拥有最为庞大的源码贡献者 …

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树&#xff1f; 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

Mamba 环境安装踩坑问题汇总及解决方法

项目场景&#xff1a; 最近Mamba有关的论文引起了众多人的关注&#xff0c;虽然Mamba论文自身被ICLR 2024拒稿&#xff0c;但是其衍生的模型层出不穷&#xff0c;诸如 Vim 和 Umamba 等。笔者在配置相关环境&#xff08;版本安装要求&#xff1a;PyTorch 1.12&#xff1b;CUDA…

C++函数对象-运算符函数对象 - 比较 - 实现 x <= y 的函数对象 (std::less_equal)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象 C 针对常用的算术和逻辑运算定义了很多函数对象&#xff1a; 比较 实现 x < y 的函数对象 std::less_equal template< class…

K8S系列文章之 [使用 Alpine 搭建 k3s]

官方文档&#xff1a;K3s - 轻量级 Kubernetes | K3s 官方描述&#xff0c;可运行在 systemd 或者 openrc 环境上&#xff0c;那就往精简方向走&#xff0c;使用 alpine 做系统。与 RHEL、Debian 的区别&#xff0c;主要在防火墙侧&#xff1b;其他基础配置需求类似&#xff0…

带你快速入门js高级-基础

1.作用域 全局 scriptxx.js 局部 函数作用域{} 块作用域 const let 2.闭包 函数外有权访问函数内的变量, 闭包可以延长变量生命周期 function 函数名 () {return function () {// 这里的变量不会立刻释放} }3.垃圾回收 不在使用(引用的变量), 防止占用内存&#xff0c;需要…

[每周一更]-(第86期):PostgreSQL入门学习和对比MySQL

入门学习PostgreSQL可以遵循以下步骤&#xff1a; 安装 PostgreSQL&#xff1a; 首先&#xff0c;你需要在你的计算机上安装 PostgreSQL。你可以从 PostgreSQL 官方网站 下载适合你操作系统的安装包&#xff0c;并按照官方文档的指导进行安装。 学习 SQL&#xff1a; PostgreS…

C#系列-简介(1)

一&#xff0c;C#简介 C#&#xff08;读作“C Sharp”&#xff09;是一种由微软公司开发的、运行于.NET Framework和.NET Core&#xff08;现在统称为.NET&#xff09;之上的高级编程语言。C#结合了C的强大功能和Java的易用性&#xff0c;旨在成为一种“优雅且安全”的语言&am…

【大厂AI课学习笔记】【1.5 AI技术领域】(7)图像分割

今天学习到了图像分割。 这是我学习笔记的脑图。 图像分割&#xff0c;Image Segmentation&#xff0c;就是将数字图像分割为若干个图像子区域&#xff08;像素的集合&#xff0c;也被称为超像素&#xff09;&#xff0c;改变图像的表达方式&#xff0c;以更容易理解和分析。 …

〔Part1〕YOLOv5:原理+源码分析(配置文件、网络模块、损失函数、跨网格匹配策略)

1. 前置知识 1.1 YOLO 算法的基本思想 首先通过特征提取网络对输入图像提取特征&#xff0c;得到一定大小的特征图&#xff0c;比如 13x13&#xff08;相当于416x416 图片大小&#xff09;&#xff0c;然后将输入图像分成 13x13 个 grid cells&#xff1a; YOLOv3/v4&#xf…

leetcode:17.电话号码的字母组合

题意和解题思路&#xff1a; 数字和字母的一一对应采用二维数组或者map映射。 这里我采用数组进行存储进而实现一一对应。由于我们无法知道for循环嵌套几层&#xff0c;因为这个是由于输入来确定的&#xff0c;所以我们可以用回溯算法中的递归来进行实现。 树形结构&#xff…

2024.2.8日总结(小程序开发5)

对上拉触底事件进行节流处理 在data中定义isloading节流阀 false表示当前没有进行任何数据请求true表示当前正在进行数据请求 在getColors()方法中修改isloading节流阀的值 在刚调用getColors时将节流阀设置true在网络请求的complete回调函数中&#xff0c;将节流阀重置为f…

C语言:月份缩写

题目描述 从一月份到十二月的英文全称依次是&#xff1a;“January”,“February”,“March”,“April”,“May”,“June”,“July”,“August”,“September”,“October”,“November”,“December” 对应的缩写依次是&#xff1a;“Jan.”,“Feb.”,“Mar.”,“Apr.”,“Ma…

git版本回退。git reset参数详解,特殊提交情形下的git push操作(CR等常见场景),git reflog和git log的详解。

切换分支可以使用 git checkout <> 或者git switch ... 创建分支可以使用 git checkout -b <. ...> 或 git branch <...> git checkout <...> git reset --hrad HEAD^ -- 今日份chatgpt git reset --hard HEAD^ 的含义如下&#xff1a; git reset …

Kubernetes命令备忘单

Kubernetes 版本&#xff1a; v1.28 https://v1-28.docs.kubernetes.io/zh-cn/docs/reference/kubectl/cheatsheet/ 这些指令适用于 Kubernetes v1.28。要检查版本&#xff0c;请使用 kubectl version 命令。 本页列举常用的 kubectl 命令和参数。 Kubectl 自动补全 BASH …