平替 Docker - 玩转容器新利器 Podman Desktop (视频)

《OpenShift 4.x HOL教程汇总》
在 podman-desktop 1.2.1 + podman 4.4 环境中验证。

文章目录

  • 什么是 podman 和 podman-desktop
  • 安装 podman 和 podman-desktop 基本环境
  • Image、Container 和 Pod 的基本操作
    • 拉取 Image
    • 运行 Container
  • 将 Pod 部署到 Kubernetes
    • 安装 Kind 扩展插件
    • 创建 Kubernetes 集群
    • 向 Kubernetes 部署 Pod
    • 访问 Kubernetes 中的 Pod
  • 视频

什么是 podman 和 podman-desktop

在这里插入图片描述

  • podman 是 RedHat 公司主导的一个免费的开源容器项目,目标是平替安全能力较差的 Docker。作为运行容器的独立环境,podman 目前已经广泛被用在 Linux、MacOS 或 Windows 环境中。尤其在 RHEL、CentOS、SUSE、Ubuntu 等 Linux 中,podman 已经是默认的容器运行环境了。除了比 Docker 有更优的安全运行特性外,podman 还有很多其他特性。例如 podman 不但可以运行标准容器,还可以像 Kubernetes 那样运行 Pod(但不能调度 Pod),因此可以作为容器应用开发、测试和运行的环境。
  • podman desktop 是运行 podman 的图形化工具,可以让对容器/Pod的操作更加容易。

安装 podman 和 podman-desktop 基本环境

本文使用了运行Fedora 38 桌面版的虚机,其中缺省会自带 podman 运行环境。另外由于要在其中运行 Kubernetes 集群,因此虚机内存最少配置 6G。

  1. 查看 podman 版本。
$ podman version
Client:       Podman Engine
Version:      4.4.2
API Version:  4.4.2
Go Version:   go1.20.1
Built:        Wed Mar  1 19:22:39 2023
OS/Arch:      linux/amd64
  1. 在 https://podman-desktop.io/downloads 页面下载 tar.gz 形式的 podman-desktop 文件包。
  2. 解压文件,然后运行 podman-desktop。
$ tar -xvf podman-desktop-1.2.1.tar.gz
$ cd podman-desktop-1.2.1
$ podman-desktop
  1. 在初始界面中点击下方的 Go to Podman Desktop 进入正式界面。
    在这里插入图片描述

Image、Container 和 Pod 的基本操作

拉取 Image

  1. 在 Setting 栏目中的 Registries 中可以添加 Registry 的地址、访问用户名和密码。
    在这里插入图片描述
  2. 在 Images 栏目中点击 Pull an image 拉取 httpd:2.4.57 镜像。在这里插入图片描述

运行 Container

  1. 先点击上图 httpd 镜像右侧的 Run Image 箭头,然后在下图的界面中提供 Container name 为 apache-httpd-1,最后点击下方的 Start Container 按钮。
    在这里插入图片描述
  2. 点击 Containers 栏目中的 apache-httpd-1 右侧的下拉菜单,然后再点击 Open Browser。
    在这里插入图片描述
  3. 可以在浏览器中访问到运行在容器中的httpd页面。
    在这里插入图片描述
  4. 点击第2部的 Generate Kube 菜单,然后将生成的内容保存到本地 pod-httpd.yaml 文件中。
    在这里插入图片描述
  5. 停止 apache-httpd-1 容器运行。
  6. 在 Pods 栏目界面中点击右上方的 Play Kubernetes YAML 按钮,然后在下图的界面中为 Kubernetes YAML file 选择 pod-httpd.yaml 文件。
    在这里插入图片描述
  7. 在 Pods 栏目中可以看到运行的 Pod。最后可以刷新步骤 3 的浏览器,确认可以正常访问到 httpd 页面。
    在这里插入图片描述

将 Pod 部署到 Kubernetes

安装 Kind 扩展插件

  1. 在 Podman Desktop 窗口下方点击 Kind。
    在这里插入图片描述
  2. 在弹出窗口中点击 Yes 开始下载 Kind 软件。
    在这里插入图片描述
  3. 下载完在提示窗口中点击 Yes,然后提供管理员权限。
    在这里插入图片描述

创建 Kubernetes 集群

  1. 在 Settings 栏目中进入 Resources,然后点击 Kind 下面的 Create new 按钮。
    在这里插入图片描述

  2. 在 Create a Kind cluster 界面中点击 Create 按钮。
    在这里插入图片描述

  3. 在创建完 Kind 集群后可以看到 kind-cluster 已经是 Running 状态了,同时还能看到 Kubernetes endpoint 地址。此外在状态栏可以看到识别出的刚刚创建的 Kubernetes 集群名称。注意:如果没有识别出 Kubernetes 集群名称,可以尝试关闭并重启 Podman Desktop。
    在这里插入图片描述

  4. 运行命令,查看运行 Kubernetes 的容器。

$ podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND     CREATED      STATUS      PORTS                                                                   NAMES
abbe67e830d3  docker.io/kindest/node@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72              5 hours ago  Up 5 hours  0.0.0.0:9090->80/tcp, 0.0.0.0:9443->443/tcp, 127.0.0.1:41535->6443/tcp  kind-cluster-control-plane
  1. 在浏览器中确认可以访问 Kubernetes endpoint。
    在这里插入图片描述
  2. 安装 kubectl 命令。
$ sudo yum install kubernetes-client
  1. 使用 ~/.kube/config 访问 Kubernetes,查看 Kubernetes 命名空间。
$ more ~/.kube/config$ kubectl get namespace
NAME                 STATUS   AGE
default              Active   9m45s
kube-node-lease      Active   9m45s
kube-public          Active   9m45s
kube-system          Active   9m45s
local-path-storage   Active   9m34s
projectcontour       Active   9m32s

向 Kubernetes 部署 Pod

  1. 在 Containers 栏目中点击 apache-httpd-1 右侧下拉菜单的 Deploy to Kubernetes。
    在这里插入图片描述
  2. 在下图的 Deploy generated pod to Kubernetes 窗口中确认部署的 Kubernetes Context 和 Kubernetes namespace,最后点击 Deploy 按钮。
    在这里插入图片描述
  3. 部署成功后可以在下图界面中看到 pod 是 Running 状态了,最后点击 Done 按钮即可。
    在这里插入图片描述

访问 Kubernetes 中的 Pod

  1. 查看运行在 Kubernetes 中的 apache-httpd-1-pod 和 Service,然后记下 apache-httpd-1-pod-9000 服务的 CLUSTER-IP 地址。
$ kubectl get pod -n default
NAME                 READY   STATUS    RESTARTS   AGE
apache-httpd-1-pod   1/1     Running   0          37s$ kubectl get svc -n default
NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
apache-httpd-1-pod-9000   ClusterIP   10.96.119.200   <none>        9000/TCP   58s
kubernetes                ClusterIP   10.96.0.1       <none>        443/TCP    29m
  1. 点击 kind-cluster-control-plane 容器,进入容器内部。
    在这里插入图片描述
  2. 在容器中的 Terminal 中执行 “curl 10.96.119.200:9000”,然后确认可以访问到页面。
    在这里插入图片描述

视频

视频

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

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

相关文章

Python爬虫——selenium_元素定位

元素定位&#xff1a;自动化要做的就是模拟鼠标和键盘来操作这些元素&#xff0c;点击&#xff0c;输入等等。操作这些元素前首先要找到它们&#xff0c;WebDriver提供很多定位元素的方法 from selenium import webdriver# 创建浏览器对象 path files/chromedriver.exe brows…

【安全】浅谈信息安全

信息安全 理解信息安全&#xff0c;要从“信息”、“安全”两个角度入手。 信息 信息是对客观世界的反映&#xff0c;表现客观事物的运动状态和变化的实质内容。 信息具有可识别、可传载、可共享、可度量的基本特征。 信息系统 信息系统是获取&#xff08;收集&#xff0…

中心对称链表

文章目录 1 题目2 思路2.1 思路一2.2 思路二2.3 考点2.4 扩展 3 实现3.1 思路13.2 思路23.3 完整例子 1 题目 已知长度为n&#xff08;n>1&#xff09;的单链表&#xff0c;表头指针为L&#xff0c;结点结构由data和next两个域构成&#xff0c;其中data域为字符型&#xff…

Linux RPM包安装、卸载和升级(rpm命令)详解

(转载请删除括号里的内容) 下面讲解一下&#xff0c;如何使用 rpm 命令对 RPM 二进制包进行安装、卸载和升级操作。我们以安装 apache 程序为例。 RPM包默认安装路径 通常情况下&#xff0c;RPM 包采用系统默认的安装路径&#xff0c;所有安装文件会按照类别分散安装到下表所…

优漫动游 大厂需要什么样的ui设计师呢?

通常来说大公司UI设计的流程主要是这样的&#xff1a;创意-头脑风暴-策划方案-交互设计&评审-美术设计&评审-开发实施&#xff0c;不过实际上大多数公司都有自己的一套流程&#xff0c;源于公司的基因、公司组织体系、公司领导风格。一起了解大厂需要什么样的ui设计师呢…

谷粒商城第十一天-品牌管理中关联分类

目录 一、总述 二、前端部分 1. 调整查询调用 2. 关联分类 三、后端部分 四、总结 一、总述 之前是在商品的分类管理中直接使用的若依的逆向代码 有下面的几个问题&#xff1a; 1. 表格上面的参数填写之后&#xff0c;都是按照完全匹配进行搜索&#xff0c;没有模糊匹配…

nodejs实现前后端websocket通信+心跳示例

nodejs后端代码 server.js //需要安装ws模块 npm install ws const WebSocket require("ws") const port 8085const ws new WebSocket.Server({port})ws.on("connection", (socket) > {socket.on("message",(message) > {const da…

自定义hook之首页数据请求动作封装 hooks

本例子实现了自定义hook之首页数据请求动作封装 hooks&#xff0c;具体代码如下 export type OrganData {dis: Array<{ disease: string; id: number }>;is_delete: number;name: string;organ_id: number;parent_id: number;sort: number; }; export type SwiperData …

【STM32】简介

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

(2)linux虚拟机配置中文输入法和如何下载软件

&#xff08;一&#xff09;配置中文输入法&#xff1a; 1、sudo apt-get install fcitx&#xff0c;安装fcitx框架&#xff0c;安装完成之后&#xff0c;选择该框架 2、接下来输入sudo apt-get install fcitx fcitx-googlepinyin&#xff0c;安装谷歌输入法之后&#xff0c;重…

WebSocket与消息推送

B/S结构的软件项目中有时客户端需要实时的获得服务器消息&#xff0c;但默认HTTP协议只支持请求响应模式&#xff0c;这样做可以简化Web服务器&#xff0c;减少服务器的负担&#xff0c;加快响应速度&#xff0c;因为服务器不需要与客户端长时间建立一个通信链接&#xff0c;但…

Windows - UWP - 网络不好的情况下安装(微软商店)MicrosoftStore的应用

Windows - UWP - 网络不好的情况下安装&#xff08;微软商店&#xff09;MicrosoftStore的应用 前言 UWP虽然几乎被微软抛弃了&#xff0c;但不得不否认UWP应用给用户带来的体验。沙箱的运行方式加上微软的审核&#xff0c;用户使用起来非常放心&#xff0c;并且完美契合Wind…

聚类与回归

聚类 聚类属于非监督式学习&#xff08;无监督学习&#xff09;&#xff0c;往往不知道因变量。 通过观察学习&#xff0c;将数据分割成多个簇。 回归 回归属于监督式学习&#xff08;有监督学习&#xff09;&#xff0c;知道因变量。 通过有标签样本的学习分类器 聚类和…

前端实现文件预览功能

前端实现文件预览功能 ❝ 需求&#xff1a;实现一个在线预览pdf、excel、word、图片等文件的功能。 介绍&#xff1a;支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代码实现所有功能&#xff0c;建议以下的预览文件标签可以在外层包裹一层弹窗。 ❞ 图片预览 iframe标签…

前端杂项-个人总结八股文的背诵方案

个人总结八股文的背诵方案 URL到显示网页的过程 浏览器解析URL&#xff0c;获取协议&#xff0c;主机名&#xff0c;端口号&#xff0c;路径等信息&#xff0c;并通过DNS查询将主机名转换为对应的IP地址浏览器与服务器建立TCP&#xff0c;进行三次握手。浏览器向服务器发送HT…

枚举缓存工具

此文章为笔记&#xff0c;为阅读其他文章的感受、补充、记录、练习、汇总&#xff0c;非原创&#xff0c;感谢每个知识分享者。 文章目录 1. 背景2. 枚举缓存3. 样例展示4. 性能对比5. 总结 本文通过几种样例展示如何高效优雅的使用java枚举消除冗余代码。 1. 背景 枚举在系统…

不需要用@Param注解与需要用@Param注解的情况

不需要用Param注解&#xff1a; 1.只有一个参数时&#xff0c;不需要用Param注解。此时在不使用Parma注解的情况下&#xff0c;sql语句中的参数占位符名称直接使用任何名称均可&#xff1b; 2.方法参数是引用数据类型的情况下&#xff0c;不需要用Param注解。 需要用Param注…

QT生成Word PDF文档

需求&#xff1a;将软件处理的结果保存为一个报告文档&#xff0c;文档中包含表格、图片、文字&#xff0c;格式为word的.doc和.pdf。生成word是为了便于用户编辑。 开发环境&#xff1a;qt4.8.4vs2010 在qt的官网上对于pdf的操作介绍如下&#xff1a;http://qt-project.org/…

华为认证 | H3C厂商证书,含金量有多高?

华为H3C认证是中国第一家建立国际规范的完整的网络技术认证体系&#xff0c;它的作用是不言而喻的&#xff0c;工作上它能给你带来技能加分。 那么H3C认证网络工程师证书含金量怎么样呢&#xff1f;下面我们就来了解一下吧。 01 H3C认证网络工程师证书含金量 全面覆盖H3C相关…

微服务Eureka注册中心

目录 一、Eureka的结构和作用 二、搭建eureka-server 三、服务注册 四、服务发现 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 存在的问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址…