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

OpenShift 4.x HOL教程汇总

在 podman-desktop 1.2.1 + podman 4.4 环境中验证。

文章目录

  • [什么是 podman 和 podman-desktop](#什么是 podman 和 podman-desktop)
  • [安装 podman 和 podman-desktop 基本环境](#安装 podman 和 podman-desktop 基本环境)
  • [Image、Container 和 Pod 的基本操作](#Image、Container 和 Pod 的基本操作)
    • [拉取 Image](#拉取 Image)
    • [运行 Container](#运行 Container)
  • [将 Pod 部署到 Kubernetes](#将 Pod 部署到 Kubernetes)
    • [安装 Kind 扩展插件](#安装 Kind 扩展插件)
    • [创建 Kubernetes 集群](#创建 Kubernetes 集群)
    • [向 Kubernetes 部署 Pod](#向 Kubernetes 部署 Pod)
    • [访问 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 版本。
bash 复制代码
$ 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。
bash 复制代码
$ 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 的容器。

bash 复制代码
$ 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 命令。
bash 复制代码
$ sudo yum install kubernetes-client
  1. 使用 ~/.kube/config 访问 Kubernetes,查看 Kubernetes 命名空间。
bash 复制代码
$ 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 地址。
bash 复制代码
$ 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",然后确认可以访问到页面。

视频

视频

相关推荐
西西弗Sisyphus4 分钟前
RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 在 Ubuntu 上安装 Docker Engine
docker·大模型·rag
运维&陈同学1 小时前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
@泽栖6 小时前
Docker 常用命令
运维·服务器·docker
鲁正杰8 小时前
在一个服务器上抓取 Docker 镜像并在另一个服务器上运行
运维·服务器·docker
老大白菜9 小时前
Windows 11 安装 Dify 完整指南 非docker环境
windows·docker·容器
VinciYan12 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
tntlbb13 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器
Gabriel_liao13 小时前
Docker安装Neo4j
docker·容器·neo4j
有一个好名字14 小时前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
Anna_Tong16 小时前
云原生大数据计算服务 MaxCompute 是什么?
大数据·阿里云·云原生·maxcompute·odps