平替 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.rhkb.cn/news/86058.html

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

相关文章

UI美工设计的主要职责(合集)

UI美工设计的主要职责1 职责&#xff1a; 1、执行公司的规章制度及专业管理办法; 2、 负责重点项目的原型设计和产品流程设计、视觉设计&#xff0c;优化网站和移动端的设计流程和规范&#xff0c;制定产品 UI/UE规范及文档编写; 3、负责使用PS、AI、illustrator、MarkMan、…

什么是Node js?什么是React?有什么区别

JavaScript是当今最流行的编程语言之一&#xff0c;它用于开发多种技术&#xff0c;两种这样的技术是Node.js和React。许多学生很难理解Nodejs和React之间的区别。 React和Nodejs之间的主要区别在于它们的使用位置。Nodejs 用于开发应用程序的服务器端&#xff0c;而Reactjs用于…

体验自制免费开源闯关学SQL

文章目录 前言mac安装nodejs启动体验 前言 sql是常用必不可少的一种语言&#xff0c;我们都或有各种各样的学习经历&#xff0c;最近看鱼皮大佬开源了一款自制的闯关学SQL项目&#xff0c;该项目是纯前端语言&#xff0c;不需要太多依赖以及前置知识&#xff0c;直接下载就可以…

golang协程池库tunny实践

前言 线程池大家都听过&#xff0c;其主要解决的是线程频繁创建销毁带来的性能影响&#xff0c;控制线程数量。 go协程理论上支持百万协程并发&#xff0c;协程创建调度的消耗极低&#xff0c;但毕竟也是消耗对吧。 而且协程池可以做一些额外的功能&#xff0c;比如限制并发&…

解决ElementUI动态表单校验验证不通过

这里记录一下&#xff0c;写项目时遇到的一个问题&#xff1a;就是动态渲染的表单项&#xff0c;加验证规则后一直不通过&#xff01;&#xff01;&#xff01; 原代码 html部分&#xff1a; <el-form-itemv-for"(teaclass,index) in addFom.classIds":label&quo…

[Mongodb 5.0]单机启动

安装完mongodb后&#xff0c;会自动生成下面两个目录(mongod.conf中设定的)&#xff0c;用来存放日志和数据 /var/lib/mongo (数据目录) /var/log/mongodb (日志目录) 要启动一个单机版的mongodb&#xff0c;一般有两种方式&#xff1a; 第一种启动方式&#xff1a;直接使用…

Go Gin 中使用 JWT

一、JWT JWT全称JSON Web Token是一种跨域认证解决方案&#xff0c;属于一个开放的标准&#xff0c;它规定了一种Token实现方式&#xff0c;目前多用于前后端分离项目和OAuth2.0业务场景下。 二、为什么要用在你的Gin中使用JWT 传统的Cookie-Sesson模式占用服务器内存, 拓展性…

Autoware.ai1.14.0自动驾驶-Demo运行

Autoware.ai1.14.0自动驾驶-Demo运行 数据准备 下载数据&#xff1a; wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz一定要注意解压文件是在.auto…

mac arm 通过brew搭建 php+nginx+mysql+xdebug

1.安装nginx brew install nginx //安装brew services start nginx //启动2.安装php brew install php7.4 //安装export PATH"/opt/homebrew/opt/php7.4/bin:$PATH" //加入环境变量 export PATH"/opt/homebrew/opt/php7.4/sbin:$PATH"brew serv…

RFID技术应用于服饰市场

RFID技术应用于服饰市场 RFID技术已广泛应用于服饰制造加工行业&#xff0c;为企业提供了许多实用的解决方案。下面是一些常见的应用场景&#xff1a; 库存管理&#xff1a;RFID标签可以被缝制或附着在服装上&#xff0c;通过RFID读写器进行扫描。企业可以实时跟踪和管理库存…

在QT及VS运行包含opencv的cmakelists实例

本文分享如何利用QT和Visual Studio运行cmake组织管理的程序&#xff0c;也就是运行cmakelists.txt。 main和cmakelists内容 main和cmakelists文件路径如下&#xff1a; main.cpp #include<opencv2/opencv.hpp> #include<iostream> #include <string> usi…

重启服务器引发的Docker异常

公司使用云服务器需要硬盘扩容&#xff0c;服务器重启才生效。 重启以后发现拉取远程镜像的命令登录失败了&#xff01; 然后发现找不到容器和镜像列表了&#xff0c;但是容器都启动了。 查看docker运行状态都是正常的 systemctl is-active docker systemctl status docker.…

【flink】Chunk splitting has encountered exception

执行任务报错&#xff1a; Chunk splitting has encountered exception 错误信息截图&#xff1a; 完整的错误信息&#xff1a; 16:30:43,911 ERROR org.apache.flink.runtime.source.coordinator.SourceCoordinator [SourceCoordinator-Source: CDC Sourceorg.jobslink.flink…

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

开启想象翅膀&#xff1a;轻松实现文本生成模型的创作应用&#xff0c;支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型&#xff0c;开箱即用 TextGen: Implementation of Text Generation models 1.介绍 TextGen实现了多种文本生成模型&#xff0c;包括&a…

web-csrf

目录 CSRF与XSS的区别&#xff1a; get请求 原理&#xff1a; pikachu为例 post请求 pikachu为例 CSRF与XSS的区别&#xff1a; CSRF是借用户的权限完成攻击&#xff0c;攻击者并没有拿到用户的权限&#xff0c;而XSS是直接盗取到了用户的权限 get请求 原理&#xff1a;…

15-1_Qt 5.9 C++开发指南_Qt多媒体模块概述

多媒体功能指的主要是计算机的音频和视频的输入、输出、显示和播放等功能&#xff0c;Qt 的多媒体模块为音频和视频播放、录音、摄像头拍照和录像等提供支持&#xff0c;甚至还提供数字收音机的支持。本章将介绍 Qt 多媒体模块的功能和使用。 文章目录 1. Qt 多媒体模块概述2. …

时间序列预测任务下探索深度学习参数对模型预测性能的影响

时间序列相关的项目在我之前的很多博文中都有涉及&#xff0c;覆盖的数据领域也是比较广泛的&#xff0c;很多任务或者是项目中往往是搭建出来指定的模型之后就基本完成任务了&#xff0c;比较少去通过实验的维度去探索分析不同参数对模型性能的影响&#xff0c;这两天正好有时…

段页式储存结构

题目&#xff1a;假设段页式储存结构系统中的地址结构如下图所示 从图中可知段号22-31占了10位&#xff0c;页号12-21占了10位&#xff0c;页内地址0-11占了12位 段&#xff1a; 最多有2^101024个段 页&#xff1a;每段最大允许2^101024个页 页的大小&#xff1a; 2^124x2^1…

dotNet 之网络TCP

**硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 DTU902 产品详情 G5501 产品详情 ARM dotnet 编程 dotNet使用TCP&#xff0c;可以使用Socket和TcpClient 、TcpListener类 2种&#xff0c;对于高级用户&…