平替 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.hqwc.cn/news/62805.html

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

相关文章

mysql高级三:sql性能优化+索引优化+慢查询日志

内容介绍 单表索引失效案例 0、思考题&#xff1a;如果把100万数据插入MYSQL &#xff0c;如何提高插入效率 &#xff08;1&#xff09;关闭自动提交&#xff0c;只手动提交一次 &#xff08;2&#xff09;删除除主键索引外其他索引 &#xff08;3&#xff09;拼写mysql可以执…

Blazor 简单组件(2):B_row/B_col 12分隔布局 简单开发

文章目录 前言12分隔布局开发B_col.razorB_col.razor.cssB_row.razorB_row.razor.css 使用案例 前言 Blazor 简单组件(0)&#xff1a;简单介绍 12分隔布局开发 B_col.razor if (Offset ! "0") {<div style" grid-column-start: span (Offset)">&l…

系统架构设计师-软件架构设计(7)

目录 大型网站系统架构演化 一、第一阶段&#xff1a;单体架构 到 第二阶段&#xff1a;垂直架构 二、第三阶段&#xff1a;使用缓存改善网站性能 1、缓存与数据库的数据一致性问题 2、缓存技术对比【MemCache与Redis】 3、Redis分布式存储方案 4、Redis集群切片的常见方式 …

【css】textarea-通过resize:none 禁止拖动设置大小

使用 resize 属性可防止调整 textareas 的大小&#xff08;禁用右下角的“抓取器”&#xff09;&#xff1a; 没有设置resize:none 代码&#xff1a; <!DOCTYPE html> <html> <head> <style> textarea {width: 100%;height: 150px;padding: 12px 20p…

Redis中的数据类型

Redis中的数据类型 Redis存储的是key-value结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有5种常用的数据类型: 字符串string哈希hash列表list集合set有序集合sorted set

信息安全:防火墙技术原理与应用.

信息安全&#xff1a;防火墙技术原理与应用. 防火墙是网络安全区域边界保护的重要技术。为了应对网络威胁&#xff0c;联网的机构或公司将自己的网络与公共的不可信任的网络进行隔离&#xff0c;其方法是根据网络的安全信任程度和需要保护的对象&#xff0c;人为地划分若干安全…

机器学习实战3-随机森林算法

文章目录 集成算法概述sklearn中的集成算法模块 RandomForestClassifier重要参数&&随机森林的分类器控制基评估器的参数n_estimatorssklearn建模流程复习交叉验证我们进行10次交叉验证&#xff0c;观察随机森林和决策树的效果n_estimators学习曲线 bootstrap & oob…

C++中的typeid

2023年8月10日&#xff0c;周四下午 目录 概述typeid的用法用法1用法2用法3举例说明 概述 typeid是 C 中的运算符&#xff0c;用于获取表达式或类型的运行时类型信息。 它返回一个std::type_info对象&#xff0c;该对象包含有关类型的信息&#xff0c;例如类型的名称。 type…

聊一下互联网开源变现

(点击即可收听) 互联网开源变现其实是指通过开源软件或者开放源代码的方式&#xff0c;实现收益或盈利。这种方式越来越被广泛应用于互联网行业 在互联网开源变现的模式中&#xff0c;最常见的方式是通过捐款、广告、付费支持或者授权等方式获利。 例如&#xff0c;有些开源软件…

stm32项目(8)——基于stm32的智能家居设计

目录 一.功能设计 二.演示视频 三.硬件选择 1.单片机 2.红外遥控 3.红外探测模块 4.光敏电阻模块 5.温湿度检测模块 6.风扇模块 7.舵机 8.WIFI模块 9.LED和蜂鸣器 10.火焰传感器 11.气体传感器 四.程序设计 1.连线方式 2.注意事项 3.主程序代码 五.课题意义…

pytest fixture 用于teardown工作

fixture通过scope参数控制setup级别&#xff0c;setup作为用例之前前的操作&#xff0c;用例执行完之后那肯定也有teardown操作。这里用到fixture的teardown操作并不是独立的函数&#xff0c;用yield关键字呼唤teardown操作。 举个例子&#xff1a; 输出&#xff1a; 说明&…

.NET SqlSuger 简单介绍,超快开发数据库

文章目录 前言SqlSugar使用我的环境Nuget 安装新建连接串DB First 和 Code First使用增删改查 总结 前言 我之前介绍过EFCore 怎么使用Nuget快速创建数据库&#xff0c;我之后发现SqlSugar更快。这里简单再说一下SqlSugar如何使用 .NET Core 数据库DB First自动生成&#xff0…