podman容器操作

简介: podman容器操作

上一篇文章,我们已经在 Centos 7上安装 podman 3.4.4,这次我们来看如何使用podman,如果熟悉docker,那么对于操作podman应该更加得心应手。


接上一回


上次centos 7安装podman 3.4.4, 我安装完了以后,就用root用户测试了一下没问题就撤了,今天来写文章的时候,发现普通用户上去执行run命令会失败,查阅了资料,记录一下

使用debug 跟踪一下命令 ./bin/podman --log-level=debug run -d nginx


报错如下:

image.png

解决:


上述异常经过排查,排查过程就不追溯了,是因为内核过低引起的,使用 uname -r可以查看内核版本,若小于4.18.0则需要升级才行。


参考:

github.com/containers/…

github.com/containers/…


image.png

升级内核(升级内核需要root权限才行哈)

ps: 本次机器是测试机器,所以内核升级为最新内核,实际线上机器视情况而定,一般不建议升级为最新版本,除非你又特殊需求


centos7 kernel rpm 下载页面:elrepo.org/linux/kerne…

mkdir kernel
cd kernel/
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.188-1.el7.elrepo.x86_64.rpm
wget https://lmdops.oss-cn-shanghai.aliyuncs.com/ops/oss/2022-04-02-18-25-27/kernel-lt-devel-5.4.188-1.el7.elrepo.x86_64.rpm
yum localinstall kernel-lt-* -y
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
# reboot # 为避免复制粘贴,所以reboot 给屏蔽了的,更新完内核,需要重启才行
uname -r



确认完毕后,再次启动podman容器就正常了。


我会列举podman操作容器的相关命令,每条命令都跟上实例,当和docker不一致时,会着重解释这是为什么。



快速尝试


可以使用 podman run --help获取帮助

其中,常用podman run 参数

podman run [options] IMAGE [COMMAND [ARG...]]

选项为

--detach / -d : 将容器运行在后台,并且打印运行容器的ID

--attach / -a: 启动容器,并且连接到 标准输入(stdin)/标准输出(stdout)/错误输出(stderr)(将容器放至前台运行)

--name / -n: 为容器分配名称,若没有分配,则会为其分配随机字符串

--rm : 当容器退出后删除容器

--rmi: 当容器退出后若没有容器再使用该镜像时,会删除镜像,通常与--rm共同搭配使用

--tty / -t: 为容器分配tty

--interactive / -i: 即使容器未在前台运行,也将stdout连接出来,即 交互式(-a 包含了该操作)



使用 alpine输出 Hello World

命令: podman run alpine echo 'hello world'

image.png



创建 alpine容器,并且建立交互并且查看其ip后退出


命令: podman run -it alpine /bin/sh

-i: 打开交互式,若不适用-t选项,是无法输入任何命令的

-t: 打开终端,如果不适用-i选项,则打开后会立马退出掉

image.png



在后台运行nginx

命令: podman run -d nginx

-d: 将容器启动运行至后台

image.png



列出容器

podmandockerps命令 新增了 如下参数

-p, --pod 列出POD相关信息

-w, --watch uint 以秒为单位输出ps

使用podman ps --help可以查看帮助



查看正在运行的容器

使用 podman ps可以查看

image.png

使用podman ps --ns 还可以显示用户空间

image.png



查看所有容器

使用podman ps -a可以查看

image.png



仅查看容器ID

使用podman ps -q可以查看容器ID

我记得很早之前,我是这么来获取ID的podman ps | awk 'NR>1 {print $1}'。。。

image.png

查看容器容量大小

使用podman ps -s可以查看容器占用空间

image.png



启动和停止容器


启动交互模式容器

还记得我们之前启的 alpine 容器么,它是交互式的,我们现在来启动它

命令 podman start -a -i 容器名称

image.png

启动非交互式容器

我们直接使用 podman start 容器名称即可

image.png



容器卷


为什么需要卷

  • 可以持久保留容器中的数据
  • 方便容器间共享
  • 不会增加容器的大小



使用卷实例

我们尝试一下,我们建立一个卷,并且使用2个容器间共享

使用/podman volume create disk1创建disk1

image.png

我们创建一个容器并且将盘挂载上去

podman run -it -v disk1:/root/ alpine /bin/sh

想容器/root中创建一个文件

image.png

我们再次启动一个容器,并且将盘挂载上去

为避免混淆,我对容器命名了一个名字,我们查看 /root 下的文件

image.png

我们甚至于可以对文件添加内容

image.png

我们回到容器1 查看

image.png




删除容器

删除容器前,应当停止容器


删除某个容器

使用podman rm 容器名称 删除某个容器(容器必须在停止情况下才能删除)

image.png



心得体会

从上述来看,podman几乎完全兼容docker,也对,不兼容就死了,本来计划今天应该写得更多的,但是由于如开头所述,普通用户使用podman报文,耽搁些时间,所以后续的就没写了,后面再补充吧。


podman远程库不仅有 docker ,还有其他的,例如

会让我们选择一个源进行下载,当然,这些源都是可配置的

image.png

从卷来看podmandocker的区别

我们来看我们刚刚创建的卷

image.png

会发现 Mountpoint$HOME 下面

当你如果使用sudo进行创建的时候,你会发现 ,该卷 在 val下面

所以各个用户使用podman创建资源,并不会影响别的用户

docker则不行,因为它有一个docker server代为执行,所以仅仅有一个路径,任何用户,只要有docker权限,都可以操作所有的资源,这是docker架构所决定的。


溜了 溜了







相关文章
|
2月前
|
存储 C++ 容器
c++vector容器-赋直操作讲解
c++vector容器-赋直操作讲解
40 0
|
12天前
|
监控 Java Serverless
Serverless 应用引擎操作报错问题之有个容器一直重启如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
21 1
|
23天前
|
容器
06-数据容器(序列列表-元组-字符串)的切片操作
06-数据容器(序列列表-元组-字符串)的切片操作
|
2月前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
453 1
|
2月前
|
编译器 程序员 C++
【C/C++ 容器操作】C++高效编程:掌握emplace_back与push_back的使用和机制
【C/C++ 容器操作】C++高效编程:掌握emplace_back与push_back的使用和机制
69 0
|
2月前
|
存储 C++ 容器
list容器-大小操作讲解
list容器-大小操作讲解
16 0
|
2月前
|
C++ 索引 容器
deque容器-赋值操作讲解
deque容器-赋值操作讲解
10 0
|
2月前
|
存储 C++ 索引
C++中的string容器及字符串拼接操作讲解
C++中的string容器及字符串拼接操作讲解
20 3
|
2月前
|
Linux Shell Docker
Docker容器操作
Docker容器操作
|
2月前
|
NoSQL 应用服务中间件 nginx
【Docker】3、Docker 基本操作【容器操作】
【Docker】3、Docker 基本操作【容器操作】
26 0

热门文章

最新文章