podman容器的使用

news2024/10/7 6:40:51

podman 安装

如果你想在rhel系统中玩podman,必须是rhel8.2版本以上。podman版本是1.9.3。从centos8.2开始默认情况下,除了最小化安装之外,系统都会默认安装podman。
如果你使用rhel8.2以上的版本,那么就直接安装podman就可以了。
在rhel8以上的系统中,默认的appstream中已经集成了podman的软件。

yum -y install podman

podman 配置镜像加速

cp /etc/containers/registries.conf{,.bak}
cat > /etc/containers/registries.conf << 'END'
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "fiyc0dbc.mirror.aliyuncs.com"
END

mv /etc/containers/registries.conf.d/000-shortnames.conf /etc/containers/registries.conf.d/000-shortnames.conf.bak
mv /etc/containers/registries.conf.d/001-rhel-shortnames.conf /etc/containers/registries.conf.d/001-rhel-shortnames.conf.bak

podman 镜像管理

# 镜像拉取
podman pull httpd

# 镜像查看
podman images

# 镜像删除
podman image rm docker.io/library/ubuntu

# 镜像备份
podman save > centos-latest.tar docker.io/library/centos:latest
ls -lh centos-latest.tar

# 镜像导入
podman load -i centos-latest.tar

# podman镜像搜索
podman search nginx

podman 容器管理

# 运行容器
podman run -dt --name web1 httpd
podman exec -it web1 bash

# 停止容器
podman container stop web1
podman ps -a

# 启动容器
podman start web1

# 重启容器
podman restart web1

# 删除容器
podman stop web1
podman rm web1

# 强行删除容器
podman rm -f container

# 查看容器的详细信息
podman run -dt --name web1 httpd
podman inspect web1

podman 网络管理

# 容器网络的创建
nmcli device status
nmcli con show

# 创建容器网络
podman network create
podman network ls

# 查看网络
nmcli con show
ip a show

# 创建容器指定网络
podman run -dt --name web2 --network podman1 httpd
bridge link

# 创建ipv4网络指定网段
podman network create --subnet 192.5.0.0/16 newnet
cat /etc/containers/networks/newnet.json

# 创建ipv6网络指定网段
podman network create --subnet 2001:db8::/64 --ipv6 newnetv6
podman run -dt --name web4 --network newnetv6 httpd
podman inspect web4 | grep GlobalIPv6Address

# 容器网络的删除 (删除网络之前必须先停止容器)
podman network ls
podman network rm newnet
podman network rm newnetv6
podman network rm podman1
podman network ls

# 容器的端口映射
podman run -dt --name web2 -p 12345:80 httpd

podman 持久化存储

数据卷

# 创建数据卷
podman volume ls
podman volume create volume1
find / -name volume1

podman volume create web
podman run -dt --name centos1 -v web:/web centos
podman exec -i centos1 df -Th

# 查看数据卷
podman volume inspect web
podman inspect centos1 | grep web

# 使用数据卷指定容器内部文件
podman run -dt --name web1 -v web:/usr/local/apache2/htdocs httpd
podman exec -i web1 df -Th

bind mounts

# 创建目录
mkdir /web2
echo "dmxy" >> /web2/index.html
# 挂载web2目录到容器目录
podman run -dt --name web2 -v /web2:/usr/local/apache2/htdocs httpd

# 查看容器网络
podman inspect web2 | grep 10.88

# 访问 web 页面
podman exec -i centos1 curl 10.88.0.12

image-20230704101042716

# 关闭 selinux 再次访问
setenforce 0
podman exec -i centos1 curl 10.88.0.12

image-20230704101330598

# 对比文件的selinux标记
ls -ldZ /web2/
ls -ldZ /var/lib/containers/storage/volumes/web/
setenforce 1

image-20230704101419931

# 挂载目录时,加上 Z 参数解决 selinux 问题
podman run -dt --name web3 -p 22222:80 -v /web2:/usr/local/apache2/htdocs:Z httpd
curl localhost:22222

image-20230704101531496

podman 容器自启动

# --name表示使用容器的名字来代替容器的ID
# --files表示生成systemd的服务文件
# web1表示使用哪个容器生成systemd的服务文件

podman run -dt --name web1 httpd

podman generate systemd --name web1
podman generate systemd --name web1 --files

mv container-web1.service /etc/systemd/system/
restorecon -RvF /etc/systemd/system/container-web1.service
systemctl restart container-web1.service

# 高级玩法
podman run -dt --name web2 -p 88:80 -v /web2:/usr/local/apache2/htdocs:Z httpd
podman ps -a
curl localhost:88

podman generate systemd --files --new --name web2
cat container-web2.service

mv container-web2.service /etc/systemd/system/
restorecon -RvF /etc/systemd/system/container-web2.service
systemctl enable container-web2.service --now

podman ps -a

非根用户使用 podman 容器

# podman如果要使用普通用户来管理容器,那么这个普通用户必须是ssh登陆或者通过终端登陆才行。否则会有问题。
useradd greg
echo 123 | passwd --stdin greg
ssh greg@localhost

# root用户的images,普通用户是看不到的。所以普通用户需要自己拉image
podman pull httpd
podman images

# 拉起容器
mkdir web1
echo web1 > web1/index.html
podman run -dt --name web1 -p 54321:80 -v /home/greg/web1:/usr/local/apache2/htdocs:Z httpd
podman ps
curl localhost:54321

# 非根用户使用systemd接管podman容器
# 创建~/.config/systemd/user目录来存放普通用户的systemd文件
mkdir -p ~/.config/systemd/user

# 生成systemd服务文件
podman generate systemd --new --files --name web1

# 将服务文件移动到普通用户的systemd的目录文件
mv container-web1.service ~/.config/systemd/user/

# 恢复SELinux文件的安全上下文
restorecon -RvF ~/.config/systemd/user/container-web1.service

# 赋予普通用户的systemd管理权限
loginctl enable-linger
systemctl --user daemon-reload
systemctl --user enable container-web1.service --now

# 重启测试
reboot

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

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

相关文章

关于多grib文件合并以及netcdf和grib的方法

前言 之前在使用WRF做敏感性试验时&#xff0c;曾修改初始场的grib文件&#xff0c;并涉及到多个grib文件合并的情况&#xff0c;下面介绍一些好用的工具处理netcdf和grib 1、 grib_copy 官网&#xff1a;https://confluence.ecmwf.int/display/ECC/grib_copy 在Linux系统上…

从零实现深度学习框架——Seq2Seq模型尝试优化

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 💡系列文章完整目录: 👉点此👈 要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽…

【操作系统核心概念】进程管理和进程调度

文章目录 前言1. 什么是操作系统2. 操作系统的定位3. 进程管理3.1 什么是进程/任务 (Process/Task)3.2 进程管理怎么做的3.3 进程控制块抽象PCB (Process Control Block)3.3.1 进程调度属性 4. 内存分配 ---- 内存管理 (Memory Manage)5. 进程间通信 (Inter Process Communicat…

带你看懂串口服务器

1、背景 串口服务器提供串口转网络功能&#xff0c;能够将RS-232/485/422串口转换成TCP/IP网络接口&#xff0c;实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。使得串口设备能够立即具备TCP/IP网络接口功能&#xff0c;连接网络进行数据通信&#xff0c;极大的扩…

Mac 脚本编辑器 (scriptEditor)

文章目录 1、打开 scriptEditor2、编写脚本3、执行脚本 1、打开 scriptEditor command 空格 输入 scriptEditor 2、编写脚本 脚本语言可以保存问文件&#xff0c;可以重复编辑 如下&#xff0c;每次打开一个新终端&#xff0c;执行新命令 tell application "Terminal&…

冒泡排序(附图详解)

目录 什么是冒泡排序&#xff1f; 冒泡排序的算法思想 算法图解 参考代码 运行结果 优化代码 运行结果 什么是冒泡排序&#xff1f; 将两个相邻的元素进行比较&#xff0c;如果前面的元素大&#xff08;从小到大排序&#xff09;&#xff0c;就交换两个元素&#xff0c;…

ESP32设备驱动-ICM-20948 运动跟踪驱传感器驱动

ICM-20948 运动跟踪驱传感器驱动 文章目录 ICM-20948 运动跟踪驱传感器驱动1、ICM-20948介绍2、硬件准备3、软件准备4、驱动实现1、ICM-20948介绍 ICM-20948 是功耗非常低的 9 轴运动跟踪设备,非常适合智能手机、平板电脑、可穿戴传感器和物联网应用。 功率是现有 9 轴设备的…

02、PIC16F877的ADC模块

02、PIC16F877的ADC模块 一、ADC的一般配置步骤 二、ADC的软件滤波 三、性能提高 四、A/D器件推荐

【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~

Java基础教程之入门介绍 上 本节学习目标1️⃣ Java发展简史1.1 诞生1.2 发展1.3 分支 2️⃣ 特征3️⃣ 代码执行过程&#x1f33e; 总结 本节学习目标 清楚Java语言的发展历史以及语言主要特点&#xff1b;清楚Java代码从源文件到解释执行的大致过程&#xff1b;理解Java实现…

react—Hook(1)

1. useState——见react语法&#xff08;2&#xff09; 2. useEffect——见react语法&#xff08;2&#xff09; 3. useRef—获取页面元素 用来获取页面中的元素&#xff0c;这样就可以对这个元素进行操作。获取元素需要使用.current才能获取到页面中的具体元素。 定义&…

thinkphp6使用think-queue实现普通队列和延迟队列

Redis的延迟队列可以用于以下场景&#xff1a; 需求说明&#xff1a; 当用户申请售后&#xff0c;商家未在n小时内处理&#xff0c;系统自动进行退款。 商家拒绝后&#xff0c;用户可申请客服介入&#xff0c;客服x天内超时未处理&#xff0c;系统自动退款。 用户收到货物&…

Xray-基础详细使用

一&#xff1a;Xray介绍 Xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&#xff0c;可支持与AWVS&#xff0c;BP等众多安全工具联合使用。 二&#xff1a;Xray简易架构&#xff1a; 说明&#xff1a;了解 Xray 的整体架构可以更…

python语法 变量、print、注释和运算符

文章目录 1. 变量1.1 变量名1.2 变量值1.3 查看变量类型 2. print2.1 常规使用2.2 格式化操作符 %2.2.1 格式化符号2.2.2 格式化操作符的辅助指令2.2.3 转义字符 2.2 .format() 3. 注释4. 算术运算符5. 逻辑运算符6. 按位操作符7. 比较运算符8. 复合赋值运算符5. 成员操作符 1.…

Spring 最全入门教程详解

目录 一、Spring Framwork简介1. Spring Framework五大功能模块2. Spring Framework特性 二、IOC容器1. IOC思想2. IOC容器在Spring中的实现3.基于xml管理Bean3.1 引入依赖3.2 创建类3.3 创建Spring的配置文件3.4 创建测试类3.5 总结 4.DI依赖注入4.1 setter注入4.2 构造器注入…

基于Java电脑配件销售系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Vue脚手架开发入门

Vue脚手架开发入门 安装脚手架及初始化项目 略过 后续使用的项目就是新搭建的一个项目 组件间的通信 父传子 查看《Vue初始化项目加载逻辑》这篇文章即可 父组件 子组件 子传父 场景&#xff1a;例如你的购物车&#xff0c;里面有很多商品&#xff0c;每个商品是一个…

PoseiSwap 治理通证POSE登录PancakeSwap,开盘涨幅超2100%

在 7 月 4 日&#xff0c;PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部 DEX PancakeSwap&#xff08;POSE/ZBC 交易对&#xff09;&#xff0c;在 $POSE 开盘交易的 10 分钟内&#xff0c;其最高涨幅达到了 2169.22%&#xff0c;所有的早期投资者基本都从中获得了不菲的…

测试与产品的那些撕逼大战

产品与测试&#xff0c;本该是一对好兄弟&#xff0c;一个为产品质量负责&#xff0c;一个为产品质量服务。但往往事与愿违&#xff0c;经常出现产品与测试撕逼大战。 为需求而撕逼 测试&#xff1a;需求不明确&#xff0c;测试用例写不出来&#xff01; 产品&#xff1a;你不…

合并回文子串(区间dp)

传送门 输入两个字符串A和B&#xff0c;合并成一个串C&#xff0c;属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度&#xff08;回文串表示从正反两…

Dlib —— 对视频流进行人脸识别(附C++源码)

照片效果 视频效果 注意&#xff1a;Dlib检测人脸在Release版耗时与CPU有关,本人I7 10代约100ms左右&#xff0c;这里本人将人脸检测用Yolov5对人脸简单抠图训练后 使用yolov5推理检测人脸&#xff0c;之后将检测到的人脸输入给Dlib做特征&#xff0c;发现人脸特征部分耗时也较…