podman 容器操作(下)

简介: podman 容器操作(下)

由于清明回老家了,服务器在租房那里没带回来,所以我在自己家里的centos上安装了一个podman 3.4.4

image.png



显示容器元数据


使用 podman inspect可以显示对象的元数据

可操作的对象包括 容器(container) 、镜像(image)、网络(network)、pod、存储卷(volume)

命令分别为

podman container inspect

podman image inspect

podman network inspect

podman pod inspect

podman volume inspect



获取容器的ip地址


我们启动nginx容器

命令podman run -d --name mynginx -p 9090:80 nginx

意思为启动一个容器,并且将容器名称命名为 mynginx且将宿主机9090映射至容器的80端口


image.png


我们使用 podman container mynginx查看一下 容器的元数据信息


image.png


使用 -f可以获取指定的信息

例如: 获取名称 和 ip地址

podman container inspect -f '{{.Name}}' mynginx

podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx



如何获取指定的信息


-f {{}}格式化输出,中编写变量,其逻辑为直接定义inspect中的信息,例如: 上述获取ip地址的逻辑为

查询 inspect 中的 NetworkSettings 中的 IPAddress , 我们将数据格式化后可得


image.png


比如,我们想获取Mac地址,-f 为: '{{.NetworkSettings.MacAddress}}'

其他资源类似,甚至你可以省略资源,只用写名称,因为podman名称是唯一的

例如:

创建一个卷命名为 mydisk,并且查看 mydisk 的元数据 和 mynginxMac 地址

image.png



挂载

之前我们使用 -v挂载卷(volume) ,其实它还可以挂载宿主机目录

我们还可以使用mount来映射整个容器的目录


挂载nginx html目录

命令

mkdir -p /root/html/
echo  'juejin pdudo test' > /root/html/index.html 
podman run -d --name mynginx2 -v /root/html:/usr/share/nginx/html -p 9091:80 nginx 
a88e38a954130f24010693cbd9867eabcd4a1de7a63612b810ef2f6edf47aa30
podman container inspect -f '{{.NetworkSettings.IPAddress}}' mynginx2


image.png

挂载成果,访问网站,成功输出 juejin pdudo test


注意事项

-v 前面参数是宿主机目录 后面参数是容器中的目录

宿主机目录需要使用绝对路径,否则podman会随机将容器中的目录给映射到宿主机上

查看挂载信息

podman inspect -f '{{.Mounts}}' mynginx2

image.png


使用 -f输出的不太好看,我们直接使用 inspect往上翻翻看

image.png


宿主机必须要绝对路径


挂载文件

这次我们将 /dev/log 挂载到 容器中,并且在容器中输出log,我们观察宿主机是否出现日志

命令

podman run --name myalpine -v /dev/log:/dev/log alpine logger 'juejin pdudo test'
journalctl | grep juejin

image.png


宿主机日志果然出现了 juejin pdudo test

所以,-v不仅能够挂载目录,还能够挂载文件(linux 一切皆文件)



将整个容器根系统映射出来

我们使用podman mount可以将整个容器文件系统挂载到宿主机上

例如如下,我们启动一个nginx容器,并且将该容器的文件系统挂载出来,我们更具挂载出来的路径,我们成功修改了容器的内文件的内容。


image.png


指定容器的IP地址

在创建容器时,可以使用--ip指定ip地址


设置nginx容器ip地址

运行nginx容器,将其地址设置为10.88.0.99


image.png




导入和导出容器


在日常工作中,我们经常有容器不经常使用,但是又必须存在的时候,为避免误操作(podman rm),我们可以打包放在本地,在需要容器的时候,我们在导入到镜像中即可。


导出容器

我们将nginx5容器给导出来

命令 podman export -o tarball名称 容器ID

我们查看容器信息


image.png



我们导出mynginx5容器

image.png


导入镜像

我们将上次导出的容器,导入到镜像中


image.png


我们可以看到,导入成功后,名称为: localhost/mynginx,我们需要的时候,直接运行就可以了。



心得体会


获取元数据

获取元数据,在日常工作中,作为排查问题非常有效,例如 之前测试 -v挂载,我宿主机忘记了写绝对路径了,导致实验结果不对,通过查询元数据才发现的。

当我们挂载了相对路径的目录后


image.png


我们查询元数据,就可以发现异常

image.png


我们挂载的宿主机的html名称,而挂载点变为了/var/lib/containers/storage/volumes/html/_data

通过这2天的学习,简而言之,如果会docker,那么入手podman简直得心应手,我使用了一圈下来,发现 podman不能说很像docker,简直是一模一样,之所以可以豪气的定义别名alias docker=podman,原来是有底气的,不得不说,运维也在卷了,说不定再过一段时间,你会看到这道面试题: "你认为Podman和Docker有什么区别? Podman优势在哪里? "。








相关文章
|
6月前
|
存储 算法 编译器
8.STL中Vector容器的常见操作(附习题)
8.STL中Vector容器的常见操作(附习题)
|
6月前
|
存储 安全 Linux
Podman入门全指南:安装、配置与运行容器
Podman入门全指南:安装、配置与运行容器
2949 1
|
5月前
|
缓存 Serverless 容器
函数计算操作报错合集之在创建容器时遇到报错,如何处理
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
95 10
|
5月前
|
API 开发工具 数据安全/隐私保护
阿里云云效操作报错合集之流水线镜像已经生成,但容器没有出现,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用合集之流水线创建时,不想选择节点和容器,该如何操作
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
存储 索引 Python
Python数据容器的切片操作详解
Python数据容器的切片操作详解
70 1
|
6月前
|
算法 C++ 容器
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
C++之vector容器操作(构造、赋值、扩容、插入、删除、交换、预留空间、遍历)
276 0
|
6月前
|
Docker 容器
Docker镜像、容器操作
Docker镜像、容器操作
|
7月前
|
监控 Java Serverless
Serverless 应用引擎操作报错问题之有个容器一直重启如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。