From ae1152be1ec6975b1171636db8675c01685a6707 Mon Sep 17 00:00:00 2001 From: wenyongda Date: Wed, 26 Nov 2025 16:08:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/Podman.md | 265 ++++++++++++++++++++++++++++++++++++ source/_posts/PowerShell.md | 88 ++++++++++++ 2 files changed, 353 insertions(+) create mode 100644 source/_posts/Podman.md diff --git a/source/_posts/Podman.md b/source/_posts/Podman.md new file mode 100644 index 0000000..cc87e50 --- /dev/null +++ b/source/_posts/Podman.md @@ -0,0 +1,265 @@ +--- +title: Podman +date: 2025-11-26 13:38:42 +tags: + +--- + +# Podman命令 + +Podman 是一个无守护进程(Daemonless)的容器引擎,它在大致功能上与 Docker 兼容。这意味着**大多数 Docker 命令你可以直接把 `docker` 换成 `podman` 来使用**。 + +--- + +## 基础与别名 (Tips) + +如果你习惯了 Docker,可以直接在 Shell 中设置别名,这样你就不用改变肌肉记忆了: + +```bash +alias docker=podman +``` + +## 容器生命周期管理 (Container Lifecycle) + +这些命令用于创建、启动、停止和删除容器。 + +- 运行容器 (最常用) + ```bash + # -d: 后台运行, -p: 端口映射, --name: 指定名称 + podman run -d --name my-nginx -p 8080:80 nginx:latest + ``` + +- 查看容器列表 + ```bash + podman ps # 仅查看正在运行的容器 + podman ps -a # 查看所有容器(包括已停止的) + ``` + +- 启动/停止/重启 + ```bash + podman start <容器ID或名称> + podman stop <容器ID或名称> + podman restart <容器ID或名称> + ``` + +- 进入容器内部 + ```bash + #以交互模式进入容器的 bash/sh + podman exec -it <容器ID或名称> /bin/bash + ``` + +- 删除容器 + ```bash + podman rm <容器ID或名称> + podman rm -f <容器ID或名称> # 强制删除正在运行的容器 + ``` + +- 查看日志 + ```bash + podman logs -f <容器ID或名称> # -f 实时跟踪日志输出 + ``` + +## 镜像管理 (Image Management) + +- 拉取镜像 + ```bash + podman pull <镜像名> + # 例如: podman pull docker.io/library/alpine:latest + ``` + +- 查看本地镜像 + ```bash + podman images + ``` + +- 删除镜像 + ```bash + podman rmi <镜像ID或名称> + ``` + +- 构建镜像 + ```bash + # 在当前目录根据 Dockerfile 构建 + podman build -t my-app:v1 . + ``` + +- 给镜像打标签 (Tag) + ```bash + podman tag <源镜像ID> <新名称>:<标签> + ``` + +## Pod 管理 (Podman 特色) + +Podman 的一大特色是支持 **Pod**(类似于 Kubernetes 的 Pod 概念),即一个 Pod 里可以包含多个共享网络和存储的容器。 + +- 创建一个空 Pod + ```bash + # 创建一个带有端口映射的 Pod + podman pod create --name my-pod -p 8080:80 + ``` + +- 在 Pod 中运行容器 + ```bash + # 将容器加入到上面创建的 pod 中 + podman run -d --pod my-pod --name container-in-pod nginx + ``` + +- 查看 Pod 列表 + ```bash + podman pod ps + ``` + +- 停止/删除 Pod + ```bash + podman pod stop + podman pod rm + ``` + +## 高级功能与系统集成 (Advanced) + +这是 Podman 最强大的地方,特别适合运维管理。 + +- **生成 Systemd 配置文件** (非常实用) Podman 可以直接生成 systemd unit 文件,让普通用户也能通过 `systemctl` 管理容器自启。 + + ```bash + # 为正在运行的容器生成 service 文件 + podman generate systemd --name <容器名称> --files --new + ``` + +- **Kubernetes 互操作性** + + - **导出 YAML:** 将现有容器导出为 K8s 的 YAML 定义。 + + ```bash + podman generate kube <容器或Pod名称> > my-pod.yaml + ``` + + - **运行 YAML:** 直接在 Podman 中运行 K8s 的 YAML 文件。 + + ```bash + podman play kube my-pod.yaml + ``` + +- 清理系统 + ```bash + # 删除所有停止的容器、未使用的网络和悬空的镜像 + podman system prune + ``` + +- 查看系统信息 + ```bash + podman info # 查看详细的存储、运行环境信息 + podman version # 查看版本 + ``` + + +# Podman换源 + +> Podman 是一个无守护进程的容器引擎,用于在 Linux 系统上开发、管理和运行 OCI 容器。与 Docker 类似,Podman 也支持配置镜像源来加速容器镜像的拉取。 + +## Linux 系统配置 + +### 方法一:全局配置(推荐) + +创建或编辑 Podman 的全局配置文件: + +```shell +sudo mkdir -p /etc/containers +sudo tee /etc/containers/registries.conf <<-'EOF' +unqualified-search-registries = ["docker.io"] +[[registry]] +prefix = "docker.io" +location = "docker.io" +[[registry.mirror]] +location = "docker.1ms.run" +[[registry.mirror]] +location = "docker.1panel.live" +[[registry.mirror]] +location = "docker.m.ixdev.cn" +[[registry.mirror]] +location = "hub.rat.dev" +[[registry.mirror]] +location = "docker.xuanyuan.me" +[[registry.mirror]] +location = "dockerproxy.net" +[[registry.mirror]] +location = "docker-registry.nmqu.com" +[[registry.mirror]] +location = "hub.amingg.com" +[[registry.mirror]] +location = "docker.amingg.com" +[[registry.mirror]] +location = "docker.hlmirror.com" +[[registry.mirror]] +location = "hub1.nat.tf" +[[registry.mirror]] +location = "hub2.nat.tf" +[[registry.mirror]] +location = "hub3.nat.tf" +[[registry.mirror]] +location = "hub4.nat.tf" +[[registry.mirror]] +location = "docker.m.daocloud.io" +[[registry.mirror]] +location = "docker.kejilion.pro" +[[registry.mirror]] +location = "hub.1panel.dev" +[[registry.mirror]] +location = "docker.apiba.cn" +[[registry.mirror]] +location = "proxy.vvvv.ee" +EOF +``` + +### 方法二:用户级配置 + +为当前用户创建配置文件: + +```shell +mkdir -p ~/.config/containers +tee ~/.config/containers/registries.conf <<-'EOF' +unqualified-search-registries = ["docker.io"] +[[registry]] +prefix = "docker.io" +location = "docker.io" +[[registry.mirror]] +location = "docker.1ms.run" +[[registry.mirror]] +location = "docker.1panel.live" +[[registry.mirror]] +location = "docker.m.ixdev.cn" +[[registry.mirror]] +location = "hub.rat.dev" +[[registry.mirror]] +location = "docker.xuanyuan.me" +[[registry.mirror]] +location = "dockerproxy.net" +[[registry.mirror]] +location = "docker-registry.nmqu.com" +[[registry.mirror]] +location = "hub.amingg.com" +[[registry.mirror]] +location = "docker.amingg.com" +[[registry.mirror]] +location = "docker.hlmirror.com" +[[registry.mirror]] +location = "hub1.nat.tf" +[[registry.mirror]] +location = "hub2.nat.tf" +[[registry.mirror]] +location = "hub3.nat.tf" +[[registry.mirror]] +location = "hub4.nat.tf" +[[registry.mirror]] +location = "docker.m.daocloud.io" +[[registry.mirror]] +location = "docker.kejilion.pro" +[[registry.mirror]] +location = "hub.1panel.dev" +[[registry.mirror]] +location = "docker.apiba.cn" +[[registry.mirror]] +location = "proxy.vvvv.ee" +EOF +``` + diff --git a/source/_posts/PowerShell.md b/source/_posts/PowerShell.md index ab19758..8a26ea2 100644 --- a/source/_posts/PowerShell.md +++ b/source/_posts/PowerShell.md @@ -4,6 +4,90 @@ date: 2023-10-07 11:25:08 tags: --- +# PowerShell 7 使用 Oh My Posh 来美化命令行 + +## 安装 PowerShell 7 + +`PowerShell 7` 指的不是系统自带的 `powershell` ,而是新下载的(微软官方出品),当然这个教程也适用于系统自带的 `powershell` + +微软官方文档地址:https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.2 +下载地址:https://github.com/PowerShell/PowerShell/releases +或者可通过 Winget 方式下载安装 + +```powershell +winget search --id Microsoft.PowerShell +``` + +Output + +```powershell +Name Id Version Source +--------------------------------------------------------------- +PowerShell Microsoft.PowerShell 7.5.4.0 winget +PowerShell Preview Microsoft.PowerShell.Preview 7.6.0.5 winget +``` + +使用 `--id` 参数安装 PowerShell 或 PowerShell 预览版 + +```powershell +winget install --id Microsoft.PowerShell --source winget +``` + +```powershell +winget install --id Microsoft.PowerShell.Preview --source winget +``` + +## 安装 Oh My Posh + +官方文档地址:https://ohmyposh.dev/ + +最好在管理员模式下运行 `powershell` + +下载安装,在 `powershell` 命令行中输入 + +```powershell +winget install oh-my-posh +``` + +在 `powershell` 命令行中输入下面命令,打开 `$Profile` 进行设置,如果系统提示不存文件,是否创建,请点击创建 + +```powershell +notepad $Profile +``` + +将以下命令添加到 `$Profile` 文件中 + +```powershell +oh-my-posh init pwsh | Invoke-Expression +``` + +应用修改,则直接在命令行中执行 `. $Profile` ,如果出现错误等问题,请尝试关闭所有 `powershell` 命令窗口,重新打开,一般都会正常显示 + +### 配置环境变量 + +配置 `POSH_THEMES_PATH` 环境变量,最好配置成系统级别的,路径在 `C:\Users\<当前登录用户>\AppData\Local\Programs\oh-my-posh\themes` 下面。 + +### 更改主题 + +在 `powerShell` 命令行中输入 `Get-ChildItem $env:POSH_THEMES_PATH` 来获取所有的已安装主题 + +**预览主题(官方推荐方式):** 由于在终端里一次性渲染所有主题会很卡,官方建议直接去网页上看截图,然后记住名字即可。 + +- **[Oh My Posh 官方主题预览页 (Themes)](https://ohmyposh.dev/docs/themes)** + +编辑 `$Profile` 文件 + +```powershell +notepad $Profile +``` + +把 `oh-my-posh init pwsh ...` 的部分後面加上 `--config "$env:POSH_THEMES_PATH/{主題名稱}.omp.json"`。 +将其内部文字改为: + +```powershell +oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/dracula.omp.json" | Invoke-Expression +``` + # 文件 ## 新建文件 @@ -33,6 +117,10 @@ Set-Content my.ini -value "" New-Item data -ItemType Directory ``` +# 目录 + + + # 做 sudo 命令 在Windows系统上sudo对应的就是管理员权限了。